<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Computing on Towards Freedom</title>
    <link>http://towardsfreedom.com/ithngys/services/website-design-hosting/tfold/tfzen/iknotes/computing/</link>
    <description>Recent content in Computing on Towards Freedom</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    <lastBuildDate>Mon, 20 Dec 2021 17:36:51 -0800</lastBuildDate>
    <atom:link href="http://towardsfreedom.com/ithngys/services/website-design-hosting/tfold/tfzen/iknotes/computing/index.xml" rel="self" type="application/rss+xml" />
    
    <item>
      <title>KDE</title>
      <link>http://towardsfreedom.com/ithngys/services/website-design-hosting/tfold/tfzen/iknotes/computing/kde/</link>
      <pubDate>Sun, 26 Jul 2026 17:33:47 -0700</pubDate>
      <guid>http://towardsfreedom.com/ithngys/services/website-design-hosting/tfold/tfzen/iknotes/computing/kde/</guid>
      <description>&lt;p&gt;Various KDE matters are presented here.&lt;/p&gt;
&lt;h1 id=&#34;plasma-global-shortcuts-reference&#34; class=&#34;anchor-header&#34;&gt;Plasma Global Shortcuts Reference &lt;a class=&#34;anchor-link&#34; href=&#34;#plasma-global-shortcuts-reference&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;From ~/.config/kglobalshortcutsrc arranged nicely by Qwen AI.&lt;/p&gt;
&lt;h2 id=&#34;-activities&#34; class=&#34;anchor-header&#34;&gt;🗂️ Activities &lt;a class=&#34;anchor-link&#34; href=&#34;#-activities&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;Action&lt;/th&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;Shortcut&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Switch to activity &amp;ldquo;Action&amp;rdquo;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;Meta+Ctrl+Shift+A&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Switch to activity &amp;ldquo;Clj&amp;rdquo;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;Meta+Ctrl+Shift+J&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Switch to activity &amp;ldquo;Dac&amp;rdquo;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;Meta+Ctrl+Shift+E&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Switch to activity &amp;ldquo;Invest&amp;rdquo;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;Meta+Ctrl+Shift+C&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Switch to activity &amp;ldquo;Music&amp;rdquo;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;Meta+Ctrl+Shift+M&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Switch to activity &amp;ldquo;NamItAll&amp;rdquo;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;Meta+Ctrl+Shift+B&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Switch to activity &amp;ldquo;R1&amp;rdquo;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;Meta+Ctrl+Shift+Num+End&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Switch to activity &amp;ldquo;R2&amp;rdquo;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;Meta+Ctrl+Shift+Num+Down&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Switch to activity &amp;ldquo;Tweak&amp;rdquo;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;Meta+Ctrl+Shift+Y&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Switch to activity &amp;ldquo;Zsh&amp;rdquo;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;Meta+Ctrl+Shift+N&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Switch to activity &amp;ldquo;Pnars&amp;rdquo;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;Meta+Ctrl+Shift+L&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;-application-launchers&#34; class=&#34;anchor-header&#34;&gt;🚀 Application Launchers &lt;a class=&#34;anchor-link&#34; href=&#34;#-application-launchers&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;Application&lt;/th&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;Shortcut&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Dolphin (File Manager)&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;Ctrl+Shift+Return&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Emacs&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;Meta+Ctrl+.&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Emacs Client&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;Meta+Return&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Falkon (Browser)&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;Meta+Alt+U&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Firefox ESR&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;Meta+Alt+Return&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Foot (Terminal)&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;Meta+Z&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;KCalc (Calculator)&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;Meta+Alt+T&lt;/code&gt; / &lt;code&gt;Calculator&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Screen Capture Script&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;Meta+Shift+Return&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;-window-management-kwin&#34; class=&#34;anchor-header&#34;&gt;🪟 Window Management (KWin) &lt;a class=&#34;anchor-link&#34; href=&#34;#-window-management-kwin&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;Action&lt;/th&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;Shortcut&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Activate Window Demanding Attention&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;Meta+Ctrl+A&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Close Window&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;Alt+F4&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Disable Active Input Capture&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;Meta+Shift+Esc&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Kill Window&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;Meta+Ctrl+Esc&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Maximize Window&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;Meta+PgUp&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Minimize Window&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;Meta+PgDown&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Minimize All Windows&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;Meta+Shift+D&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Move Mouse to Center&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;Meta+F6&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Move Window to Next Screen&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;Meta+Shift+Right&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Move Window to Previous Screen&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;Meta+Shift+Left&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Quick Tile Window (Bottom/Left/Right/Top)&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;Meta+Down&lt;/code&gt; / &lt;code&gt;Left&lt;/code&gt; / &lt;code&gt;Right&lt;/code&gt; / &lt;code&gt;Up&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Window Operations Menu&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;Alt+F3&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Zoom In / Out / Actual Size&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;Meta++&lt;/code&gt; / &lt;code&gt;Meta+-&lt;/code&gt; / &lt;code&gt;Meta+0&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;-tiling--zones-krohnkite--kzones&#34; class=&#34;anchor-header&#34;&gt;🧱 Tiling &amp;amp; Zones (Krohnkite &amp;amp; KZones) &lt;a class=&#34;anchor-link&#34; href=&#34;#-tiling--zones-krohnkite--kzones&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;Action&lt;/th&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;Shortcut&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;KZones&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Activate layout 1 through 9&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;Meta+Num+1&lt;/code&gt; to &lt;code&gt;Meta+Num+9&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Cycle layouts (Forward/Reverse)&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;Ctrl+Alt+D&lt;/code&gt; / &lt;code&gt;Ctrl+Alt+Shift+D&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Move window to next/prev zone&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;Ctrl+Alt+Right&lt;/code&gt; / &lt;code&gt;Ctrl+Alt+Left&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Move window to zone 1 through 9&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;Ctrl+Alt+Num+1&lt;/code&gt; to &lt;code&gt;Ctrl+Alt+Num+9&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Snap active / all windows&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;Meta+Shift+Space&lt;/code&gt; / &lt;code&gt;Meta+Space&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Switch window in current zone&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;Ctrl+Alt+Up&lt;/code&gt; / &lt;code&gt;Ctrl+Alt+Down&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Toggle zone overlay&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;Ctrl+Alt+C&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;Krohnkite&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Focus Down/Left/Prev/Right/Up&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;Meta+J&lt;/code&gt; / &lt;code&gt;H&lt;/code&gt; / &lt;code&gt;\&lt;/code&gt; / &lt;code&gt;K&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Grow/Shrink Height &amp;amp; Width&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;Meta+Ctrl+J/K/H/L&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Increase/Decrease Size&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;Meta+I&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Move Window Down/Left/Right/Up&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;Meta+Shift+J&lt;/code&gt; / &lt;code&gt;H&lt;/code&gt; / &lt;code&gt;L&lt;/code&gt; / &lt;code&gt;K&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Next / Previous Layout&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;Meta+\&lt;/code&gt; / `Meta+&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Toggle Float / Float All&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;Meta+F&lt;/code&gt; / &lt;code&gt;Meta+Shift+F&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Monocle Layout&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;Meta+M&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;-desktop--workspace-navigation&#34; class=&#34;anchor-header&#34;&gt;🖥️ Desktop &amp;amp; Workspace Navigation &lt;a class=&#34;anchor-link&#34; href=&#34;#-desktop--workspace-navigation&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;Action&lt;/th&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;Shortcut&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Show Activity Switcher&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;Meta+Q&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Walk through activities (Forward/Reverse)&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;Meta+;&lt;/code&gt; (or &lt;code&gt;Meta+Tab&lt;/code&gt;) / &lt;code&gt;Meta+Shift+A&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Switch Desktop (Down/Up/Left/Right)&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;Meta+Ctrl+Down&lt;/code&gt; / &lt;code&gt;Up&lt;/code&gt; / &lt;code&gt;Left&lt;/code&gt; / &lt;code&gt;Right&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Switch Desktop Left/Right (Alt)&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;Meta+Ins&lt;/code&gt; / &lt;code&gt;Meta+Del&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Switch to Desktop 1 through 6&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;Ctrl+F1&lt;/code&gt; through &lt;code&gt;Ctrl+F6&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Move Window to Desktop (Down/Up/Left/Right)&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;Meta+Ctrl+Shift+Down&lt;/code&gt; / &lt;code&gt;Up&lt;/code&gt; / &lt;code&gt;Left&lt;/code&gt; / &lt;code&gt;Right&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Toggle Desktop Grid&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;Meta+F8&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Toggle Overview&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;Meta+W&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Peek at Desktop (Show Desktop)&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;Meta+D&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Present Windows (Current/All/Class)&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;Ctrl+F9&lt;/code&gt; / &lt;code&gt;Ctrl+F10&lt;/code&gt; / &lt;code&gt;Ctrl+F7&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;-window-switching--navigation&#34; class=&#34;anchor-header&#34;&gt;⌨️ Window Switching &amp;amp; Navigation &lt;a class=&#34;anchor-link&#34; href=&#34;#-window-switching--navigation&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;Action&lt;/th&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;Shortcut&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Switch to Window (Down/Left/Right/Up)&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;Meta+Alt+Down&lt;/code&gt; / &lt;code&gt;Left&lt;/code&gt; / &lt;code&gt;Right&lt;/code&gt; / &lt;code&gt;Up&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Walk Through Windows (Forward/Reverse)&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;Alt+Tab&lt;/code&gt; / &lt;code&gt;Alt+Shift+Tab&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Walk Through Windows of Current App&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;Alt+`` / &lt;/code&gt;Alt+~`&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;-audio-media--power&#34; class=&#34;anchor-header&#34;&gt;🔊 Audio, Media &amp;amp; Power &lt;a class=&#34;anchor-link&#34; href=&#34;#-audio-media--power&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;Action&lt;/th&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;Shortcut&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;Audio &amp;amp; Media&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Decrease/Increase Volume (Small)&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;Shift+Volume Down&lt;/code&gt; / &lt;code&gt;Shift+Volume Up&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Decrease/Increase Volume&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;Volume Down&lt;/code&gt; / &lt;code&gt;Volume Up&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Mute Microphone&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;Microphone Mute&lt;/code&gt; / &lt;code&gt;Meta+Volume Mute&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Mute Volume&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;Volume Mute&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Media Next/Previous/Play/Pause/Stop&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;Media Next&lt;/code&gt; / &lt;code&gt;Previous&lt;/code&gt; / &lt;code&gt;Play&lt;/code&gt; / &lt;code&gt;Stop&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;Power &amp;amp; Hardware&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Decrease/Increase Screen Brightness&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;Monitor Brightness Down&lt;/code&gt; / &lt;code&gt;Up&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Decrease/Increase Brightness (Small)&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;Shift+Monitor Brightness Down&lt;/code&gt; / &lt;code&gt;Up&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Hibernate / Suspend / Power Off&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;Hibernate&lt;/code&gt; / &lt;code&gt;Sleep&lt;/code&gt; / &lt;code&gt;Power Off&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Switch Power Profile&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;Battery&lt;/code&gt; / &lt;code&gt;Meta+B&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Toggle Keyboard Backlight&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;Keyboard Light On/Off&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;-touchpad-tablet--system&#34; class=&#34;anchor-header&#34;&gt;🖱️ Touchpad, Tablet &amp;amp; System &lt;a class=&#34;anchor-link&#34; href=&#34;#-touchpad-tablet--system&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;Action&lt;/th&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;Shortcut&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;Touchpad&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Disable / Enable / Toggle Touchpad&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;Touchpad Off&lt;/code&gt; / &lt;code&gt;Touchpad On&lt;/code&gt; / &lt;code&gt;Touchpad Toggle&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;Wacom Tablet&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Map to fullscreen / screen 1 / screen 2&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;Meta+Ctrl+F&lt;/code&gt; / &lt;code&gt;1&lt;/code&gt; / &lt;code&gt;2&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Next / Previous Profile&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;Meta+Ctrl+N&lt;/code&gt; / &lt;code&gt;Meta+Ctrl+P&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Toggle screen map selection&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;Meta+Ctrl+M&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Toggle stylus mode / touch tool&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;Meta+Ctrl+S&lt;/code&gt; / &lt;code&gt;Meta+Ctrl+T&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;System &amp;amp; Plasma&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Activate Application Launcher&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;Meta&lt;/code&gt; / &lt;code&gt;Alt+F1&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Activate Task Manager Entry 1 through 9&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;Meta+1&lt;/code&gt; through &lt;code&gt;Meta+9&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Lock Session&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;Meta+L&lt;/code&gt; / &lt;code&gt;Screensaver&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Show Clipboard Items at Mouse Pos&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;Meta+V&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Show Logout Screen&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;Ctrl+Alt+Del&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Stop Current Activity&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;Meta+S&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Suspend Compositing&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;Alt+Shift+F12&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Toggle Screen Reader&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;Meta+Alt+S&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;Open/Retract Yakuake&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;F12&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;</description>
    </item>
    
    <item>
      <title>Musescore</title>
      <link>http://towardsfreedom.com/ithngys/services/website-design-hosting/tfold/tfzen/iknotes/computing/musescore/</link>
      <pubDate>Fri, 24 Jan 2025 13:00:02 -0800</pubDate>
      <guid>http://towardsfreedom.com/ithngys/services/website-design-hosting/tfold/tfzen/iknotes/computing/musescore/</guid>
      <description>&lt;p&gt;Musescore4 is the most highly rated software for creating notation. It
is pretty close to even Lilypond, but offers considerably greater
flexibility. A nice bonus is that you can export to musicxml and then
use Lilypond&amp;rsquo;s musicxml2ly (-l english)script to convert!&lt;/p&gt;
&lt;h1 id=&#34;implode&#34; class=&#34;anchor-header&#34;&gt;implode &lt;a class=&#34;anchor-link&#34; href=&#34;#implode&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;A midi import left piano part in 2 upper and 2 lower staves. Select both
uppers and implode them into a single multivoice staff. Then select that
staff and implode again to combine the voices into a single voice.
Repeat for the lower staves.&lt;/p&gt;
&lt;h1 id=&#34;raggedy-edge-effect&#34; class=&#34;anchor-header&#34;&gt;raggedy edge effect &lt;a class=&#34;anchor-link&#34; href=&#34;#raggedy-edge-effect&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Format &amp;gt; Page settings and play with staff space values.&lt;/p&gt;
&lt;h1 id=&#34;hide-empty-bars&#34; class=&#34;anchor-header&#34;&gt;hide empty bars &lt;a class=&#34;anchor-link&#34; href=&#34;#hide-empty-bars&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Format &amp;gt; Style &amp;gt; Score add hide empty staves rem don&amp;rsquo;t hide empty
staves in first system&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Vivaldi</title>
      <link>http://towardsfreedom.com/ithngys/services/website-design-hosting/tfold/tfzen/iknotes/computing/vivaldi/</link>
      <pubDate>Sat, 27 Jul 2024 20:48:23 -0700</pubDate>
      <guid>http://towardsfreedom.com/ithngys/services/website-design-hosting/tfold/tfzen/iknotes/computing/vivaldi/</guid>
      <description>&lt;p&gt;A browser that is powerful, personal and private, adapting to you, not
the other way around.&lt;/p&gt;
&lt;p&gt;This is the best browser we have ever used. It is full of features and
makes one work very effectively!&lt;/p&gt;
&lt;h1 id=&#34;reading-list&#34; class=&#34;anchor-header&#34;&gt;reading list &lt;a class=&#34;anchor-link&#34; href=&#34;#reading-list&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Go to reading list button in side panel and add current page using +.
(Better than having it on the address bar) this is a very fast way to
mark a webpage from there we can do bookmark or omnivore.&lt;/p&gt;
&lt;h1 id=&#34;cannot-enter-nickname&#34; class=&#34;anchor-header&#34;&gt;cannot enter nickname &lt;a class=&#34;anchor-link&#34; href=&#34;#cannot-enter-nickname&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;The problem appears to be there is something in the bookmarks trash that
is getting in the way. After emptying the trash, it accepts the
nickname.&lt;/p&gt;
&lt;h1 id=&#34;toggle-extensions&#34; class=&#34;anchor-header&#34;&gt;toggle extensions &lt;a class=&#34;anchor-link&#34; href=&#34;#toggle-extensions&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;When we hide an extension button, the toggle extension button appears
(so we can view the hidden item again). If we remove the button, there
is no toggle button.&lt;/p&gt;
&lt;h1 id=&#34;tab-stacking&#34; class=&#34;anchor-header&#34;&gt;tab stacking &lt;a class=&#34;anchor-link&#34; href=&#34;#tab-stacking&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;use any method to stack tabs large numbers use shift key and left click
for stacking&lt;/p&gt;
&lt;p&gt;save as session (file &amp;gt; save open tabs as session) reload stack from
File &amp;gt; Open Saved Session reorder stack using window panel&lt;/p&gt;
&lt;h1 id=&#34;exports&#34; class=&#34;anchor-header&#34;&gt;exports &lt;a class=&#34;anchor-link&#34; href=&#34;#exports&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;file &amp;gt; export bookmarks (more intelligent than looking in bookmarks)
file &amp;gt; export reading list not working use F2 export reading list&lt;/p&gt;
&lt;h1 id=&#34;issue-with-systemd-v249&#34; class=&#34;anchor-header&#34;&gt;issue with systemd v249 &lt;a class=&#34;anchor-link&#34; href=&#34;#issue-with-systemd-v249&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;&amp;lt;2021-07-31 Sat&amp;gt; affects all chromium based browsers&lt;/p&gt;
&lt;p&gt;one solution was to disable systemd-resolve, but then need to setup
/etc/resolv.conf instead of linking it to
/run/systemd/resolve/stub-resolv.conf&lt;/p&gt;
&lt;p&gt;the other was to downgrade to an earlier version of vivaldi using
downgrade from aur, until archlinux makes v249 work properly with
chromium again&lt;/p&gt;
&lt;h1 id=&#34;lack-of-suitable-h264-error&#34; class=&#34;anchor-header&#34;&gt;lack of suitable h264 error &lt;a class=&#34;anchor-link&#34; href=&#34;#lack-of-suitable-h264-error&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;pacman -S vivaldi-ffmpeg-codecs&lt;/p&gt;
&lt;h1 id=&#34;profile&#34; class=&#34;anchor-header&#34;&gt;profile &lt;a class=&#34;anchor-link&#34; href=&#34;#profile&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;When we changed the name of schnell to admins, vivaldi locked the
profile and wouldn&amp;rsquo;t start. After some semi-helpful consultation with
bing we did: cd .config/vivaldi rm Default/LOCK rm SingletonLock (which
pointed to schnell - 1066)&lt;/p&gt;
&lt;h1 id=&#34;sync&#34; class=&#34;anchor-header&#34;&gt;sync &lt;a class=&#34;anchor-link&#34; href=&#34;#sync&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;&lt;a href=&#34;https://help.vivaldi.com/desktop/tools/sync/&#34;&gt;sync help&lt;/a&gt; after sync is
setup as per help instructions (including encryption key), it seems to
happen automatically though on a remote device we need to close and open
vivaldi. the remote has to be logged in and have the same encryption key
of course.&lt;/p&gt;
&lt;h1 id=&#34;sort-bookmarks&#34; class=&#34;anchor-header&#34;&gt;sort bookmarks &lt;a class=&#34;anchor-link&#34; href=&#34;#sort-bookmarks&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;use sidebar to sort bookmarks to sort bookmark bar, right click in empty
area and select sort&lt;/p&gt;
&lt;h1 id=&#34;pdf-viewing&#34; class=&#34;anchor-header&#34;&gt;pdf viewing &lt;a class=&#34;anchor-link&#34; href=&#34;#pdf-viewing&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;not rendering at all difficult to know what the problem is, but it works
fine if we reboot … and probably if we restart x too.&lt;/p&gt;
&lt;h1 id=&#34;dark-theme&#34; class=&#34;anchor-header&#34;&gt;dark theme &lt;a class=&#34;anchor-link&#34; href=&#34;#dark-theme&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;A fair bit of setting up went into getting the dark theme to function
adequately with vivaldi because forcing it messed up certain websites
like amazon.ca, so we had to either toggle into white theme (M-]), or
adjust the darkness for specific sites using Userstyles. The full
discussion is available on Vivaldi dark theme issue: Blacked-out images
on forced dark websites
&lt;a href=&#34;https://www.perplexity.ai/search/vivaldi-dark-theme-issue-black-TicJWlOUSMaRYCYRFBoqKw&#34;&gt;thread&lt;/a&gt;.&lt;/p&gt;
&lt;h1 id=&#34;vivaldi-social&#34; class=&#34;anchor-header&#34;&gt;&lt;a href=&#34;https://help.vivaldi.com/tutorials/vivaldi-social-on-mastodon-a-step-by-step-tutorial/&#34;&gt;vivaldi social&lt;/a&gt; &lt;a class=&#34;anchor-link&#34; href=&#34;#vivaldi-social&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;this may be a good way to get into mastedon&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Rosegarden</title>
      <link>http://towardsfreedom.com/ithngys/services/website-design-hosting/tfold/tfzen/iknotes/computing/rosegarden/</link>
      <pubDate>Sat, 27 Jul 2024 20:22:30 -0700</pubDate>
      <guid>http://towardsfreedom.com/ithngys/services/website-design-hosting/tfold/tfzen/iknotes/computing/rosegarden/</guid>
      <description>&lt;p&gt;Rosegarden is a music composition and editing environment based around a
MIDI sequencer that features a rich understanding of music notation and
includes basic support for digital audio. Most important, it can produce
lilypond files.&lt;/p&gt;
&lt;p&gt;This is likely the best composing option we have beyond plain text
entry. One major advantage it offers is the ability to insert bars when
there are multiple voices which both denemo and musescore can do, but is
laborious with lilypond code. Ideally, we should be able to work with rg
and lilypond (via emacs | frescobaldi)&lt;/p&gt;
&lt;p&gt;The rg input and playback systems are excellent and there is also a
notation view. However, the actual conversion to lilypond may not be as
good as we&amp;rsquo;d like it to be.&lt;/p&gt;
&lt;p&gt;EAN!!! Experiment As Needed!!!&lt;/p&gt;
&lt;h1 id=&#34;intro-info&#34; class=&#34;anchor-header&#34;&gt;intro info &lt;a class=&#34;anchor-link&#34; href=&#34;#intro-info&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;most of the items here are from the rgwiki purpose is to serve as the
sequencer of choice for users who prefer to work with music notation.
provides a segment-based mechanism for arranging blocks of MIDI and
audio data on a canvas
&lt;a href=&#34;https://www.rosegardenmusic.com/tutorials/&#34;&gt;tutorials&lt;/a&gt;,
&lt;a href=&#34;https://www.rosegardenmusic.com/wiki/Frequently_Asked_Questions&#34;&gt;faq&lt;/a&gt;&lt;/p&gt;
&lt;h1 id=&#34;multiple-voices&#34; class=&#34;anchor-header&#34;&gt;multiple voices &lt;a class=&#34;anchor-link&#34; href=&#34;#multiple-voices&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Do in seperate segments, change the stem orientations (up|down), put
onto same track. However, when this converts to lilypond, rg forces
separate voices in the code. While the final product looks just right,
the ly code is very difficult to work with on it&amp;rsquo;s own as well as trying
to migrate it into lynew.&lt;/p&gt;
&lt;p&gt;Therefore, it seems best to just get the other voices to appear in the
same segment even though you&amp;rsquo;ll get ties. Then these can be voiced by ly
requirements - may be design a script to do it. Approaching the issue
this way is also much simpler as far as inputting goes.&lt;/p&gt;
&lt;h1 id=&#34;arpeggio-symbol&#34; class=&#34;anchor-header&#34;&gt;arpeggio symbol &lt;a class=&#34;anchor-link&#34; href=&#34;#arpeggio-symbol&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Can be done easily by using T button and then Arp as a ly directive. The
result is quite good!&lt;/p&gt;
&lt;h1 id=&#34;installation-components&#34; class=&#34;anchor-header&#34;&gt;installation components &lt;a class=&#34;anchor-link&#34; href=&#34;#installation-components&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://wiki.archlinux.org/title/FluidSynth&#34;&gt;fluidsynth&lt;/a&gt; ln -s
FluidR3_GM&lt;/sub&gt;.sf2 default.sf2 (&lt;em&gt;usr/share/soundfonts&lt;/em&gt;) setup
/etc/conf.d/fluidsynth (soundfont and alsa daemon) aconnect -o
aplaymidi -p128:0&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://wiki.archlinux.org/title/JACK_Audio_Connection_Kit#Installation&#34;&gt;jack2&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;pipewire pipewire-alsa, pipewire-jack and things work!&lt;/p&gt;
&lt;p&gt;fluidsynth gave no latency, but kept crashing. timidity didn&amp;rsquo;t crash
but lagged, so we looked at libao with -OO &lt;a href=&#34;https://bbs.archlinux.org/viewtopic.php?pid=2039142#p2039142&#34;&gt;latency with midi
keyboard, timidity++ and
rosegarden&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;here is the solution i finally found to my problem.
/usr/lib/systemd/user/timidity.service contains the lines [Service]
ExecStart=/usr/bin/timidity -iA so i just need to add on -OO to this
and it works by putting me in libao! however, it didn&amp;rsquo;t enable from
~/.config/systemd/user/ giving Unit
~/.config/systemd/user/timidity.service is added as a dependency to a
non-existent unit multi-user.target&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&#34;rg-without-softsynth&#34; class=&#34;anchor-header&#34;&gt;rg without softsynth &lt;a class=&#34;anchor-link&#34; href=&#34;#rg-without-softsynth&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Haven&amp;rsquo;t been able to get it to work just just soundfont or linuxsampler.&lt;/p&gt;
&lt;p&gt;Not possible as per Bing:&lt;/p&gt;
&lt;p&gt;No, you cannot use a soundfont directly in Rosegarden without fluidsynth
or another softsynth. Rosegarden is a MIDI sequencer, not a synthesizer.
It can only send MIDI data to an output device, but it cannot generate
sound by itself. You need a software or hardware synthesizer to play the
MIDI data and produce sound¹.&lt;/p&gt;
&lt;p&gt;A soundfont is a file that contains samples of real instruments, such as
piano, guitar, violin, etc. A soundfont can be used by a software
synthesizer, such as fluidsynth, to play the samples according to the
MIDI data. A software synthesizer can also use other methods of
synthesis, such as additive, subtractive, FM, etc., to create sounds
from scratch².&lt;/p&gt;
&lt;p&gt;Fluidsynth is a software synthesizer that can use soundfonts or other
synthesis methods to generate sound from MIDI data. It can run as a
standalone application or as a DSSI plugin in Rosegarden. You can load
different soundfonts into fluidsynth and select different instruments
for each track in Rosegarden³.&lt;/p&gt;
&lt;p&gt;If you want to use a soundfont directly in Rosegarden without
fluidsynth, you will need a hardware synthesizer that can load
soundfonts, such as the Sound Blaster series of soundcards. You will
need to connect the hardware synthesizer to your computer via a MIDI
interface and configure Rosegarden to use it as an output port. You will
also need to load the soundfont into the hardware synthesizer using a
utility program, such as sfxload⁴.&lt;/p&gt;
&lt;p&gt;I hope this explains why you need fluidsynth or another softsynth to use
a soundfont in Rosegarden. 😊&lt;/p&gt;
&lt;p&gt;Source: Conversation with Bing, 9/5/2023 (1)
frequently_askedquestions&lt;/sub&gt; | Rosegarden Wiki.
&lt;a href=&#34;https://www.rosegardenmusic.com/wiki/Frequently_Asked_Questions&#34;&gt;https://www.rosegardenmusic.com/wiki/Frequently_Asked_Questions&lt;/a&gt;. (2)
Improving Your Linux System For Creating Music - Rosegarden: music.
&lt;a href=&#34;https://www.rosegardenmusic.com/tutorials/qsynth-rosegarden/index.html&#34;&gt;https://www.rosegardenmusic.com/tutorials/qsynth-rosegarden/index.html&lt;/a&gt;.
(3) LinuxQuestions.org - [SOLVED] Rosegarden, FluidSynth, and JACK
refuse ….
&lt;a href=&#34;https://www.linuxquestions.org/questions/slackware-14/rosegarden-fluidsynth-and-jack-refuse-to-work-4175420532-print/&#34;&gt;https://www.linuxquestions.org/questions/slackware-14/rosegarden-fluidsynth-and-jack-refuse-to-work-4175420532-print/&lt;/a&gt;.
(4) using_rosegardenwithqsynthlookmanojackd&lt;/sub&gt; | Rosegarden
Wiki.
&lt;a href=&#34;https://www.rosegardenmusic.com/wiki/using_rosegarden_with_qsynth_look_ma_no_jackd&#34;&gt;https://www.rosegardenmusic.com/wiki/using_rosegarden_with_qsynth_look_ma_no_jackd&lt;/a&gt;.&lt;/p&gt;
&lt;h1 id=&#34;rg-with-timidity&#34; class=&#34;anchor-header&#34;&gt;rg with timidity &lt;a class=&#34;anchor-link&#34; href=&#34;#rg-with-timidity&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;using qpwgraph, crackling sounds are sometimes heard probably due to
some feedback loop if usb audio device (or whatever) capture mono -&amp;gt;
rosegarden record in 1 L disconnecting this seems to work and crackling
disappears (sometimes even if we reconnect)&lt;/p&gt;
&lt;h1 id=&#34;rg-with-yoshimi&#34; class=&#34;anchor-header&#34;&gt;rg with yoshimi &lt;a class=&#34;anchor-link&#34; href=&#34;#rg-with-yoshimi&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;a minor issue is that unlike timidity, yoshimi isn&amp;rsquo;t playing the very
first note (though the sounds come out much cleaner). so we should
probably always have a blank bar. printouts work fine though since the
blankbar is ignored.&lt;/p&gt;
&lt;p&gt;all this in the post works, but yoshimi needs to be run in floating
mode, otherwise the changes in rg won&amp;rsquo;t come through. or just start it
in cli.&lt;/p&gt;
&lt;p&gt;the numbers of the instruments are changed, but the banks aren&amp;rsquo;t … yet&lt;/p&gt;
&lt;h2 id=&#34;yoshimirgd&#34; class=&#34;anchor-header&#34;&gt;yoshimi.rgd &lt;a class=&#34;anchor-link&#34; href=&#34;#yoshimirgd&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;this has to go to ~/.local/share/rosegarden/library/, but the one we
downloaded doesn&amp;rsquo;t match with the actualy instruments. so we mv
yoshimi.rgd yoshimi.rgd.gz gunzip yoshimi.rgd.gz and edit it.&lt;/p&gt;
&lt;p&gt;one issue is updating the id numbers for The_MysteriousBank&lt;/sub&gt;
and since sed doesn&amp;rsquo;t do non-greedy, use perl perl -pe
&amp;rsquo;s/id=&amp;quot;(+̣)&amp;quot;/&amp;ldquo;id=\&amp;rdquo;.($1+1).&amp;quot;\&amp;quot;/e&amp;rsquo; tt.tt not that we really understand
this too well - we require some lang may be clojure, rust … to make such
manipulations.&lt;/p&gt;
&lt;p&gt;rather than do the above we wrote script&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;#!/usr/bin/env zsh
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# creates ~/.local/share/rosegarden/library/yoshimi.rgd from /usr/share/yoshimi/banks&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# usage: jri (must use zsh or parameter substitution will not work)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;YDIR&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;/usr/share/yoshimi/banks
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;yoshimirgd&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;~/.local/share/rosegarden/library/yoshimi.rgd
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# first part of a yoshimi.rgd file&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;T1&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;&amp;lt;?xml version=&amp;#34;1.0&amp;#34; encoding=&amp;#34;UTF-8&amp;#34;?&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;&amp;lt;!DOCTYPE rosegarden-data&amp;gt;&amp;lt;rosegarden-data version=&amp;#34;4-0.9.1&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;    &amp;lt;studio recordfilter=&amp;#34;0&amp;#34; thrufilter=&amp;#34;0&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;    &amp;lt;device direction=&amp;#34;play&amp;#34; id=&amp;#34;0&amp;#34; name=&amp;#34;Yoshimi&amp;#34; type=&amp;#34;midi&amp;#34; variation=&amp;#34;LSB&amp;#34;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;        &amp;lt;librarian email=&amp;#34;lorenzofsutton@gmail.com&amp;#34; name=&amp;#34;Lorenzo Sutton&amp;#34; /&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;        &amp;lt;controls&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;            &amp;lt;control colourindex=&amp;#34;2&amp;#34; controllervalue=&amp;#34;10&amp;#34; default=&amp;#34;64&amp;#34; description=&amp;#34;&amp;amp;lt;none&amp;amp;gt;&amp;#34; ipbposition=&amp;#34;0&amp;#34; max=&amp;#34;127&amp;#34; min=&amp;#34;0&amp;#34; name=&amp;#34;Pan&amp;#34; type=&amp;#34;controller&amp;#34; /&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;            &amp;lt;control colourindex=&amp;#34;3&amp;#34; controllervalue=&amp;#34;93&amp;#34; default=&amp;#34;0&amp;#34; description=&amp;#34;&amp;amp;lt;none&amp;amp;gt;&amp;#34; ipbposition=&amp;#34;1&amp;#34; max=&amp;#34;127&amp;#34; min=&amp;#34;0&amp;#34; name=&amp;#34;Chorus&amp;#34; type=&amp;#34;controller&amp;#34; /&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;            &amp;lt;control colourindex=&amp;#34;1&amp;#34; controllervalue=&amp;#34;7&amp;#34; default=&amp;#34;100&amp;#34; description=&amp;#34;&amp;amp;lt;none&amp;amp;gt;&amp;#34; ipbposition=&amp;#34;2&amp;#34; max=&amp;#34;127&amp;#34; min=&amp;#34;0&amp;#34; name=&amp;#34;Volume&amp;#34; type=&amp;#34;controller&amp;#34; /&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;            &amp;lt;control colourindex=&amp;#34;3&amp;#34; controllervalue=&amp;#34;91&amp;#34; default=&amp;#34;0&amp;#34; description=&amp;#34;&amp;amp;lt;none&amp;amp;gt;&amp;#34; ipbposition=&amp;#34;3&amp;#34; max=&amp;#34;127&amp;#34; min=&amp;#34;0&amp;#34; name=&amp;#34;Reverb&amp;#34; type=&amp;#34;controller&amp;#34; /&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;            &amp;lt;control colourindex=&amp;#34;4&amp;#34; controllervalue=&amp;#34;64&amp;#34; default=&amp;#34;0&amp;#34; description=&amp;#34;&amp;amp;lt;none&amp;amp;gt;&amp;#34; ipbposition=&amp;#34;-1&amp;#34; max=&amp;#34;127&amp;#34; min=&amp;#34;0&amp;#34; name=&amp;#34;Sustain&amp;#34; type=&amp;#34;controller&amp;#34; /&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;            &amp;lt;control colourindex=&amp;#34;2&amp;#34; controllervalue=&amp;#34;11&amp;#34; default=&amp;#34;127&amp;#34; description=&amp;#34;&amp;amp;lt;none&amp;amp;gt;&amp;#34; ipbposition=&amp;#34;-1&amp;#34; max=&amp;#34;127&amp;#34; min=&amp;#34;0&amp;#34; name=&amp;#34;Expression&amp;#34; type=&amp;#34;controller&amp;#34; /&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;            &amp;lt;control colourindex=&amp;#34;4&amp;#34; controllervalue=&amp;#34;1&amp;#34; default=&amp;#34;0&amp;#34; description=&amp;#34;&amp;amp;lt;none&amp;amp;gt;&amp;#34; ipbposition=&amp;#34;-1&amp;#34; max=&amp;#34;127&amp;#34; min=&amp;#34;0&amp;#34; name=&amp;#34;Modulation&amp;#34; type=&amp;#34;controller&amp;#34; /&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;            &amp;lt;control colourindex=&amp;#34;2&amp;#34; controllervalue=&amp;#34;74&amp;#34; default=&amp;#34;64&amp;#34; description=&amp;#34;&amp;amp;lt;none&amp;amp;gt;&amp;#34; ipbposition=&amp;#34;2&amp;#34; max=&amp;#34;127&amp;#34; min=&amp;#34;0&amp;#34; name=&amp;#34;Cutoff Freq&amp;#34; type=&amp;#34;controller&amp;#34; /&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;            &amp;lt;control colourindex=&amp;#34;2&amp;#34; controllervalue=&amp;#34;71&amp;#34; default=&amp;#34;64&amp;#34; description=&amp;#34;&amp;amp;lt;none&amp;amp;gt;&amp;#34; ipbposition=&amp;#34;2&amp;#34; max=&amp;#34;127&amp;#34; min=&amp;#34;0&amp;#34; name=&amp;#34;Resonance&amp;#34; type=&amp;#34;controller&amp;#34; /&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;            &amp;lt;control colourindex=&amp;#34;2&amp;#34; controllervalue=&amp;#34;73&amp;#34; default=&amp;#34;64&amp;#34; description=&amp;#34;&amp;amp;lt;none&amp;amp;gt;&amp;#34; ipbposition=&amp;#34;2&amp;#34; max=&amp;#34;127&amp;#34; min=&amp;#34;0&amp;#34; name=&amp;#34;Attack time&amp;#34; type=&amp;#34;controller&amp;#34; /&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;            &amp;lt;control colourindex=&amp;#34;2&amp;#34; controllervalue=&amp;#34;72&amp;#34; default=&amp;#34;64&amp;#34; description=&amp;#34;&amp;amp;lt;none&amp;amp;gt;&amp;#34; ipbposition=&amp;#34;2&amp;#34; max=&amp;#34;127&amp;#34; min=&amp;#34;0&amp;#34; name=&amp;#34;Release time&amp;#34; type=&amp;#34;controller&amp;#34; /&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;            &amp;lt;control colourindex=&amp;#34;4&amp;#34; controllervalue=&amp;#34;1&amp;#34; default=&amp;#34;8192&amp;#34; description=&amp;#34;&amp;amp;lt;none&amp;amp;gt;&amp;#34; ipbposition=&amp;#34;-1&amp;#34; max=&amp;#34;16383&amp;#34; min=&amp;#34;0&amp;#34; name=&amp;#34;PitchBend&amp;#34; type=&amp;#34;pitchbend&amp;#34; /&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;        &amp;lt;/controls&amp;gt;&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# second part of a yoshimi.rgd file&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;T2&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;&amp;lt;/device&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;&amp;lt;/studio&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;&amp;lt;/rosegarden-data&amp;gt;&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# put part1 on&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$T1&lt;/span&gt; &amp;gt; &lt;span class=&#34;nv&#34;&gt;$yoshimirgd&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# go to /usr/share/yoshimi/banks for further operations&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$YDIR&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# templates to substitute into&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;Btempl&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;&amp;lt;bank lsb=&amp;#34;0&amp;#34; msb=&amp;#34;NUM&amp;#34; name=&amp;#34;BANK&amp;#34; percussion=&amp;#34;false&amp;#34;&amp;gt;&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;Itempl&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;&amp;lt;program category=&amp;#34;BANK&amp;#34; id=&amp;#34;IDEN&amp;#34; name=&amp;#34;NAME&amp;#34; /&amp;gt;&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# put the banks and instruments in to the yoshimi.rgd file&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;N&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; BA in &lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;ls -1 &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;LC_COLLATE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;C sort&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;do&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;o&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;N&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;+=&lt;/span&gt;5&lt;span class=&#34;o&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nv&#34;&gt;Btxt&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;Btempl&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;s&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;/NUM/&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$N&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;s&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;/BANK/&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$BA&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$Btxt&lt;/span&gt; &amp;gt;&amp;gt; &lt;span class=&#34;nv&#34;&gt;$yoshimirgd&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; IN in &lt;span class=&#34;nv&#34;&gt;$BA&lt;/span&gt;/*&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;do&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;c1&#34;&gt;#ID=${${IN%%-*}#*/}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nv&#34;&gt;ID&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;si&#34;&gt;${${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;IN&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;%%-*&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;#*/&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; bc&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;#str-&amp;gt;int&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;o&#34;&gt;((&lt;/span&gt;ID-&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;1&lt;span class=&#34;o&#34;&gt;))&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;#dec ID so instruments match up on import&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nv&#34;&gt;NAM&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;IN&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;#*-&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;%.*&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nv&#34;&gt;Itxt&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${${${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;Itempl&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;s&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;/IDEN/&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$ID&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;s&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;/NAME/&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$NAM&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;s&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;/BANK/&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$BA&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$Itxt&lt;/span&gt; &amp;gt;&amp;gt; &lt;span class=&#34;nv&#34;&gt;$yoshimirgd&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;done&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;lt;/bank&amp;gt;&amp;#34;&lt;/span&gt; &amp;gt;&amp;gt; &lt;span class=&#34;nv&#34;&gt;$yoshimirgd&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;done&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# put the part2 into the yoshimi.rgd&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$T2&lt;/span&gt; &amp;gt;&amp;gt; &lt;span class=&#34;nv&#34;&gt;$yoshimirgd&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;all done&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;exit&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;post-folderol&#34; class=&#34;anchor-header&#34;&gt;post @folderol &lt;a class=&#34;anchor-link&#34; href=&#34;#post-folderol&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;i have things working now pretty nicely between yoshimi and rg.&lt;/p&gt;
&lt;p&gt;i downloaded this
&lt;a href=&#34;https://sourceforge.net/p/rosegarden/code/HEAD/tree/trunk/rosegarden/data/library/yoshimi.rgd?format=raw&#34;&gt;yoshimi.rgd&lt;/a&gt;
after reading this thread which addressed an issue i was having with rg
resetting anything i did in yoshimi to whatever it felt like (well
that&amp;rsquo;s what it felt like): &lt;a href=&#34;https://rosegarden-user.narkive.com/mmi4eF6A/rosegarden-yoshimi-issue&#34;&gt;Rosegarden - Yoshimi
issue&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;i put the yoshimi.rgd into ~/.local/share/rosegarden/library/ where
there are a huge number of rgd files for various instruments and
synthesizers (too i guess).&lt;/p&gt;
&lt;p&gt;then in rg, i went into Studio &amp;gt; Manage MIDI Devices where i&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;deleted the default general midi bank (though it keeps coming back,
hence i have to open a template), because i don&amp;rsquo;t really need it and
never could do anything with it either&lt;/li&gt;
&lt;li&gt;created a new device (click New in topleft box), then click Bank,
then click Import (bottom left box).&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;the import button gave me access to the yoshimi.rgd file and eventually
i had the banks and instruments showing up in the instrument parameters
box from where i could assign them to various tracks.&lt;/p&gt;
&lt;p&gt;i found though that i had to set the channel dropdown to &amp;lsquo;fixed&amp;rsquo; or all
the tracks would change to the same thing when i set a single track.
every instrument i set for an rg midi track, is reflected in yoshimi
too! (however, that is true only within the bank that is chosen on
yoshimi if the instrument number exists - i can&amp;rsquo;t seem to change the
bank in yoshimi from rg - may be we shouldn&amp;rsquo;t and just gather up the
instruments we want into a custom bank?)&lt;/p&gt;
&lt;p&gt;i midied out the melody, and a piano accompaniment for the first 4 bars
of twinkle, twinkle little start - hey, jane taylor and mozart (even
though he didn&amp;rsquo;t really write the melody) would be pleased. then i
recorded audio in rg, singing out both (though not simultaneously) a
tenor and baritone part - neither jane nor wolfgang would have been
pleased, but rg didn&amp;rsquo;t crash!! (may be because yoshimi was doing the
midi heavy lifting instead of timidity|fluidsynth?)&lt;/p&gt;
&lt;p&gt;so, assuming this is the a|the correct way to do these things, all is
well indeed!&lt;/p&gt;
&lt;h1 id=&#34;todo-ornaments&#34; class=&#34;anchor-header&#34;&gt;&lt;span class=&#34;todo TODO&#34;&gt;TODO&lt;/span&gt; ornaments &lt;a class=&#34;anchor-link&#34; href=&#34;#todo-ornaments&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;while not as convenient as musescore, we likely have much better control
of the ornaments played as midi in rg than lilypond&amp;rsquo;s articulate.ly, so
we should create a file of ornaments that can be used in any
composition. this file needs to be loaded first and then we merge the
actual composition file to work with.&lt;/p&gt;
&lt;h1 id=&#34;rg-lyrics-entry-avoid&#34; class=&#34;anchor-header&#34;&gt;rg lyrics entry AVOID &lt;a class=&#34;anchor-link&#34; href=&#34;#rg-lyrics-entry-avoid&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;compose notes copy lyrics editor template (which contains the note
layout nicely) input using emacs (seems to be much faster than using the
rg editor) paste emacs work into lyrics editor&lt;/p&gt;
&lt;p&gt;only purpose verses serve is if you want same music as with hymns - for
praductions, it is likely going to mess everything up!&lt;/p&gt;
&lt;h1 id=&#34;done-rg---ly&#34; class=&#34;anchor-header&#34;&gt;&lt;span class=&#34;done DONE&#34;&gt;DONE&lt;/span&gt; rg -&amp;gt; ly &lt;a class=&#34;anchor-link&#34; href=&#34;#done-rg---ly&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;some things don&amp;rsquo;t quite come out as well&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;we can play with rg&lt;/li&gt;
&lt;li&gt;we can copy and paste rg notes into established ly templates&lt;/li&gt;
&lt;li&gt;we can modify specific parts of the rgly with a script (probably best
solution and DONE!)&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&#34;tour&#34; class=&#34;anchor-header&#34;&gt;&lt;a href=&#34;https://www.rosegardenmusic.com/tour/&#34;&gt;tour&lt;/a&gt; &lt;a class=&#34;anchor-link&#34; href=&#34;#tour&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;Editing&lt;/li&gt;
&lt;li&gt;MIDI Configurations for over 100 well-known MIDI synths are included&lt;/li&gt;
&lt;li&gt;Notation&lt;/li&gt;
&lt;li&gt;Audio let Rosegarden&amp;rsquo;s sample-accurate audio engine do the hard work
-&amp;gt; this might be the issue?&lt;/li&gt;
&lt;li&gt;Synths not sure what this is&lt;/li&gt;
&lt;li&gt;Integration jack is standard, but we use pipewire-jack and wonder if
this is why audio crashes?&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&#34;handbook&#34; class=&#34;anchor-header&#34;&gt;&lt;a href=&#34;https://www.rosegardenmusic.com/doc/en/index.html&#34;&gt;handbook&lt;/a&gt; &lt;a class=&#34;anchor-link&#34; href=&#34;#handbook&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id=&#34;1-introduction&#34; class=&#34;anchor-header&#34;&gt;1. Introduction &lt;a class=&#34;anchor-link&#34; href=&#34;#1-introduction&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Rosegarden is a versatile software that functions as both a MIDI and
audio sequencer and a musical notation editor.&lt;/li&gt;
&lt;li&gt;It allows users to record, arrange, compose music in traditional
score, MIDI data, or audio formats.&lt;/li&gt;
&lt;li&gt;Users can write, edit, and organize music compositions and add
synthesization, effects, and mixdown capabilities.&lt;/li&gt;
&lt;li&gt;Rosegarden provides comprehensive notation editing for high-quality
printed output.&lt;/li&gt;
&lt;li&gt;The software is designed to be user-friendly for both experienced
Linux users and newcomers to music software.&lt;/li&gt;
&lt;li&gt;The handbook serves as a reference for Rosegarden&amp;rsquo;s capabilities and
concepts and can be used sequentially or as a reference guide.&lt;/li&gt;
&lt;li&gt;Users can access tutorials on the Rosegarden website for further
assistance.&lt;/li&gt;
&lt;li&gt;Rosegarden&amp;rsquo;s functions are typically accessible through menus, but
keyboard shortcuts and toolbar icons are also available for
convenience.&lt;/li&gt;
&lt;li&gt;Some of Rosegarden&amp;rsquo;s features are optional, depending on the
installation and available libraries.&lt;/li&gt;
&lt;li&gt;Dependencies for optional features are documented in the Rosegarden
README and configuration documentation, and users should consult their
configuration documentation or distributor if certain features are not
visible in their version of Rosegarden.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;2-rosegarden-files-and-documents&#34; class=&#34;anchor-header&#34;&gt;2. Rosegarden Files and Documents &lt;a class=&#34;anchor-link&#34; href=&#34;#2-rosegarden-files-and-documents&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Rosegarden stores compositions in its own internal format with a .rg
file extension.&lt;/li&gt;
&lt;li&gt;It can also handle various standard file formats.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;u&gt;New compositions&lt;/u&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;When starting Rosegarden, a new document with an empty composition is
created, requiring users to either record or create segments to start
editing.&lt;/li&gt;
&lt;li&gt;Segments are blank lengths of music that can be filled in using
editing tools.&lt;/li&gt;
&lt;li&gt;The software&amp;rsquo;s binary file format is actually gzipped XML, despite
complaints about its opacity.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;u&gt;Using Midi Files&lt;/u&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Rosegarden provides functions for importing and exporting MIDI files
through &amp;ldquo;File-&amp;gt;Import-&amp;gt;Import MIDI File&amp;rdquo; and &amp;ldquo;File-&amp;gt;Export-&amp;gt;Export
MIDI File.&amp;rdquo;&lt;/li&gt;
&lt;li&gt;While Rosegarden can work with file formats like MIDI, it does not
store MIDI data internally.&lt;/li&gt;
&lt;li&gt;It&amp;rsquo;s advisable to save files in Rosegarden&amp;rsquo;s own format to retain
comprehensive information, as exporting to MIDI may result in the loss
or rearrangement of certain file structure details.&lt;/li&gt;
&lt;li&gt;When loading a MIDI file in Rosegarden, it organizes the music into
separate tracks for each MIDI track or channel, establishes instrument
mappings, and attempts to generate plausible notation for the MIDI
performance data.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;u&gt;Rosegarden Project Files&lt;/u&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Rosegarden composition files (.rg) store note information, MIDI
controller settings, plugin details, and audio file references for a
composition.&lt;/li&gt;
&lt;li&gt;The actual audio files are not stored within the composition file, and
users are responsible for managing their location on disk.&lt;/li&gt;
&lt;li&gt;Rosegarden Project files are helpful for conveniently bundling a
composition, its associated audio files, plugin data, and additional
files into one package.&lt;/li&gt;
&lt;li&gt;To export a composition and its data as a Rosegarden Project file, use
&amp;ldquo;File-&amp;gt;Export-&amp;gt;Export Rosegarden Project file…&amp;rdquo;; to import such a
file and reconstruct a composition, use &amp;ldquo;File-&amp;gt;Import-&amp;gt;Import
Rosegarden Project file…&amp;rdquo;&lt;/li&gt;
&lt;li&gt;It&amp;rsquo;s important to note that Rosegarden Project format is for
interchange purposes, not long-term archival, and compatibility may
vary between Rosegarden versions.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;u&gt;Other file formats&lt;/u&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Rosegarden supports exporting to and importing from various file
formats, providing flexibility in working with different music
systems.&lt;/li&gt;
&lt;li&gt;Csound: Export score files for the Csound synthesis system using
&amp;ldquo;File-&amp;gt;Export-&amp;gt;Export Csound score file…,&amp;rdquo; although not all
Rosegarden data may be saved in Csound format.&lt;/li&gt;
&lt;li&gt;Mup: Save the current composition as a new Mup file using
&amp;ldquo;File-&amp;gt;Export-&amp;gt;Export Mup file…,&amp;rdquo; suitable for use with the Mup
music publication system, though some adjustments may be needed for
quality output.&lt;/li&gt;
&lt;li&gt;MusicXML: Use &amp;ldquo;File-&amp;gt;Export-&amp;gt;Export MusicXML file…&amp;rdquo; to save the
composition as a MusicXML file, compatible with music software
supporting MusicXML, but note that support is experimental and may not
preserve all data.&lt;/li&gt;
&lt;li&gt;Hydrogen: Rosegarden can import h2song files from the Hydrogen drum
machine, creating a MIDI-style structure with one track per pattern.
Audio samples are not imported; use &amp;ldquo;File-&amp;gt;Import-&amp;gt;Import Hydrogen
file…&amp;rdquo; for this.&lt;/li&gt;
&lt;li&gt;Rosegarden 2.1: Create a new composition from an existing X11
Rosegarden v2.1 (.rose) file using &amp;ldquo;File-&amp;gt;Import-&amp;gt;Import Rosegarden
2.1 file…&amp;rdquo; for compatibility.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;u&gt;Merging files&lt;/u&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;In Rosegarden, you can merge external files into the current document,
incorporating their data into the existing composition.&lt;/li&gt;
&lt;li&gt;To perform a merge, use the appropriate option found on the
File-&amp;gt;Merge submenu instead of the Open or Import options.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;u&gt;Printing&lt;/u&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Rosegarden offers the ability to print compositions as musical scores.&lt;/li&gt;
&lt;li&gt;Printing directly from MIDI data may result in less readable output,
so it&amp;rsquo;s recommended to use the notation editor to tidy up the score
before printing.&lt;/li&gt;
&lt;li&gt;While Rosegarden is capable of producing readable scores, for true
print-quality scores, users should consider using LilyPond in
conjunction with Rosegarden.&lt;/li&gt;
&lt;li&gt;LilyPond is a dedicated music typesetting software that produces
high-quality typeset output from specialized text files.&lt;/li&gt;
&lt;li&gt;Rosegarden can export LilyPond files using &amp;ldquo;File-&amp;gt;Export-&amp;gt;Export
LilyPond,&amp;rdquo; and it provides access to LilyPond features not available
in Rosegarden&amp;rsquo;s native interface.&lt;/li&gt;
&lt;li&gt;The File-&amp;gt;Preview with LilyPond function allows for convenient
previewing of LilyPond-formatted scores using a PDF viewer.&lt;/li&gt;
&lt;li&gt;LilyPond options are available when exporting, previewing, or printing
with LilyPond, offering additional customization.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;u&gt;LilyPond options&lt;/u&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;When using LilyPond export functions in Rosegarden, a dialog allows
for specific LilyPond export options.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;LilyPond export supports various paper sizes and landscape mode for
printing.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Font size settings can be adjusted to control the size of notes and
staffs on the printed score.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Users can choose to export content from all tracks, non-muted tracks,
the currently selected track, or selected segments.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;There&amp;rsquo;s an option to merge tracks with the same name, useful for
creating piano scores with multiple voices.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Tempo marks, lyrics, and beamings can be exported based on user
preferences.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Users can adjust the alignment of lyrics as Left, Center, or Right.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The &amp;ldquo;Ragged bottom&amp;rdquo; option allows for positioning extra vertical space
at the bottom of the page when there are few staffs.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Enabling &amp;ldquo;point-and-click&amp;rdquo; debugging allows clicking notes in the PDF
output to open the LilyPond source.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;LilyPond can produce MIDI output, and users can choose to enable this
option.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Headers in LilyPond output can be edited both in the export dialog and
through the Composition-&amp;gt;Edit Document Properties function.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;NewPrinting compositions must either record something, or create some
blank lengths of music (referred to as &amp;ldquo;segments&amp;rdquo;) that you can then
fill in&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Using MIDI files it does not store MIDI data internally Rosegarden
splits out the music into one track per MIDI track or channel in the
file&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Rosegarden Project files contains your composition, all of the audio
files it uses, any further data files required for plugins used in the
composition, and any additional files you may want to include, all in
one big bundle.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Other file formats Rosegarden can export to and import from a number
of other file formats.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Merging files loading or importing the data from the file, as
necessary, and adding it to the existing composition&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Printing to produce true print-quality scores you should consider
using LilyPond in conjunction with Rosegarden&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;LilyPond options export All tracks, Non-muted tracks, the current
Selected track, or Selected segments Merge tracks that have the same
name: for voices Export tempo marks Export lyrics: don&amp;rsquo;t do lyrics
here Export beamings: use lp default Export block Headers: do
automatically through lypdnew.sh&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;3-the-track-editor&#34; class=&#34;anchor-header&#34;&gt;3. The Track Editor &lt;a class=&#34;anchor-link&#34; href=&#34;#3-the-track-editor&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;u&gt;Overview&lt;/u&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Rosegarden&amp;rsquo;s layout is centered around a track structure, common to
many sequencers.&lt;/li&gt;
&lt;li&gt;The main window features a track editor with a list of tracks and
their associated instruments displayed on the left side.&lt;/li&gt;
&lt;li&gt;Users can manipulate and move blocks of music data referred to as
&amp;ldquo;segments&amp;rdquo; within the track editor.&lt;/li&gt;
&lt;li&gt;Specialized editors like notation, matrix, percussion matrix, and
event list can be used to work with segments.&lt;/li&gt;
&lt;li&gt;The type of segment created depends on the track it&amp;rsquo;s placed on; for
example, an audio track creates audio segments, and a MIDI track
creates MIDI segments.&lt;/li&gt;
&lt;li&gt;Track parameters can be set to pre-select segment properties at the
track level and fine-tune MIDI recording.&lt;/li&gt;
&lt;li&gt;Tracks can be assigned to various MIDI, plugin synth, or audio
instruments.&lt;/li&gt;
&lt;li&gt;The button area on the left of the segment canvas displays track
number, mute and record status, and track labels.&lt;/li&gt;
&lt;li&gt;Users can mute/unmute tracks andselect a track as a record target by
clicking on the respective buttons.&lt;/li&gt;
&lt;li&gt;Track labels are optional and can be displayed via the Settings-&amp;gt;Show
Track Labels menu option, otherwise, instrument assignments are shown.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;u&gt;Tracks and instruments&lt;/u&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Each track in Rosegarden must have an instrument assigned to it to
produce sound.&lt;/li&gt;
&lt;li&gt;The first 16 tracks are typically assigned to the 16 instruments of
the first available MIDI device, while the next 16 tracks are assigned
to audio.&lt;/li&gt;
&lt;li&gt;To change the instrument assignment for a track, right-click on the
track label, and a pop-up menu will allow you to select from available
instruments.&lt;/li&gt;
&lt;li&gt;Instruments can represent a single channel on a MIDI device or a
mono/stereo audio output or audio synth plugin.&lt;/li&gt;
&lt;li&gt;MIDI or synth plugin instruments are suitable for tracks containing
note data, while audio instruments are used for tracks containing
audio.&lt;/li&gt;
&lt;li&gt;Multiple tracks can be assigned to the same instrument, causing them
to produce sounds in a similar way.&lt;/li&gt;
&lt;li&gt;The Instrument Parameter Box allows users to adjust various properties
of the instrument associated with a track, such as selecting a
specific patch for a MIDI instrument to produce a particular sound.&lt;/li&gt;
&lt;li&gt;For more information about instruments, users can refer to the Studio
section.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;u&gt;Creating segments&lt;/u&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;To create an empty segment in Rosegarden, use the pencil tool, which
is typically the default active tool when starting Rosegarden.&lt;/li&gt;
&lt;li&gt;Click on the pencil icon on the toolbar and then click at the point
where you want the segment to start, at the appropriate height for the
track and the correct time.&lt;/li&gt;
&lt;li&gt;Drag rightwards to define the length of the segment in bars.&lt;/li&gt;
&lt;li&gt;Segments can also be created using the Select tool by clicking and
dragging with the middle mouse button or the left button with Ctrl
held down.&lt;/li&gt;
&lt;li&gt;If you need to draw a segment longer than the visible canvas, the
canvas will scroll automatically once you reach its edge. [Can also
use Segment &amp;gt; Stretch or Squash to assign number of measures.]&lt;/li&gt;
&lt;li&gt;Holding Shift while clicking and dragging prevents the snap-to-grid
effect.&lt;/li&gt;
&lt;li&gt;New segments are initially in yellow color and display a treble clef
by default.&lt;/li&gt;
&lt;li&gt;Explore track parameters for more segment customization options.&lt;/li&gt;
&lt;li&gt;To create a segment that starts in the middle of an existing segment,
hold Ctrl and Alt when clicking. The track will expand to accommodate
the new segment.&lt;/li&gt;
&lt;li&gt;After creating a segment, you can edit it using the matrix, percussion
matrix, or notation editors by double-clicking on the segment or
right-clicking and choosing the desired editor from the context menu.&lt;/li&gt;
&lt;li&gt;When recording from a MIDI device or audio input, new segments are
automatically created for each recording.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;u&gt;Audio segments&lt;/u&gt; [probably will not use because of lmms]&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;An audio segment in Rosegarden contains recorded or sampled audio
data, not editable note-event data.&lt;/li&gt;
&lt;li&gt;Rosegarden enables you to record, play, arrange, and split audio
segments but does not offer audio waveform editing features.&lt;/li&gt;
&lt;li&gt;You can create an audio segment by recording from an audio source onto
a track assigned to an audio instrument or by working with existing
WAV files.&lt;/li&gt;
&lt;li&gt;To manage audio segments, use the audio manager dialog accessible
through File-&amp;gt;Manage Audio Files.&lt;/li&gt;
&lt;li&gt;You can import audio files by dragging and dropping them into the
audio file manager or using its File menu.&lt;/li&gt;
&lt;li&gt;To add audio files to a track, either drag-and-drop them onto
Rosegarden&amp;rsquo;s track canvas or use the audio file manager&amp;rsquo;s
Action-&amp;gt;Insert into Selected Audio Track menu function if the
selected track is assigned to an audio instrument.&lt;/li&gt;
&lt;li&gt;Audio files associated with a composition are saved with the
composition, but the audio files themselves are not. Maintain a proper
audio file search path (via Composition-&amp;gt;Edit Document
Properties…-&amp;gt;Audio) to keep audio files accessible together.&lt;/li&gt;
&lt;li&gt;You can export your project to a Rosegarden project package file
(.rgp) via File-&amp;gt;Export-&amp;gt;Export Rosegarden Project File to collect
scattered audio files in one place.&lt;/li&gt;
&lt;li&gt;The audio manager dialog displays sample-rate and other information
for each audio file, marking any with a different sample rate than the
current JACK audio session. Rosegarden will resample these files
during playback, but you are advised to resample them separately using
dedicated audio editing software for better quality.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;u&gt;Manipulating segments&lt;/u&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;In Rosegarden, you can manipulate segments using various tools
available from the main toolbar.&lt;/li&gt;
&lt;li&gt;The Select tool serves multiple purposes, including selecting, moving,
copying, resizing, and creating segments.&lt;/li&gt;
&lt;li&gt;To move a segment, use the Move tool and click and drag it. Holding
Ctrl while dragging creates a copy instead of moving.&lt;/li&gt;
&lt;li&gt;Resizing a segment is done with the Resize tool, which allows you to
extend or shorten a segment. Holding Ctrl while resizing rescales the
segment.&lt;/li&gt;
&lt;li&gt;Stretching or squashing a segment can be achieved by holding Ctrl
while resizing. This affects the speed of MIDI events or the
time-stretching of audio.&lt;/li&gt;
&lt;li&gt;The Split tool is used to split a single segment into two separate
segments. Click on the segment you wish to split with the Split tool.&lt;/li&gt;
&lt;li&gt;You can split segments at the closest barline to the cursor by
default. Holding Shift while splitting prevents this.&lt;/li&gt;
&lt;li&gt;Rosegarden offers additional Split functions in the Segments menu,
including Split on Silence, Split by Pitch, Split by Recording Source,
and Split at Time, each with specific functions for segment splitting.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;u&gt;Tempo and Time Signature&lt;/u&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;In Rosegarden, a composition is associated with a single stream of
tempo changes and time signature changes.&lt;/li&gt;
&lt;li&gt;Tempo changes can be constant or smoothly ramping to a different
target tempo at a specific future time.&lt;/li&gt;
&lt;li&gt;Tempo is displayed in beats per minute, and its duration depends on
the time signature.&lt;/li&gt;
&lt;li&gt;The tempo ruler in Rosegarden&amp;rsquo;s editors shows tempo and time signature
changes throughout the composition.&lt;/li&gt;
&lt;li&gt;You can adjust tempo changes by clicking and dragging the tempo line
in the tempo ruler.&lt;/li&gt;
&lt;li&gt;To insert a new tempo change, right-click on the ruler and select
&amp;ldquo;Insert Tempo Change.&amp;rdquo;&lt;/li&gt;
&lt;li&gt;The tempo and time signature editor lists all tempo and time signature
changes and allows individual editing.&lt;/li&gt;
&lt;li&gt;You can add or edit tempo changes using various methods, including the
tempo ruler and the tempo and time signature editor.&lt;/li&gt;
&lt;li&gt;Time signature changes in Rosegarden affect the structure of beats in
each bar, and you can add or edit them using Composition menu
functions or the tempo and time signature editor.&lt;/li&gt;
&lt;li&gt;You can set tempo from an existing segment using functions like &amp;ldquo;Set
Tempo to Audio Segment Duration&amp;rdquo; or &amp;ldquo;Set Tempos from Beat Segment&amp;rdquo; for
MIDI events. [tempo map: you can record from a MIDI keyboard and tap
a series of single notes at approximate beat positions, speeding up
and slowing down gradually; then select the recorded segment !!!]&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;u&gt;Markers, ranges, and loops&lt;/u&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Markers in Rosegarden are moments in time with labels, useful for
defining specific points in your composition. [sort of like
commenting]&lt;/li&gt;
&lt;li&gt;Markers are displayed in the main ruler at the top of Rosegarden&amp;rsquo;s
editor windows.&lt;/li&gt;
&lt;li&gt;To add a new marker, double-click on the marker area of the ruler, and
you can edit its name and location in the marker editor. [easier to
use right-click for insert and edit; also S-m to insert]&lt;/li&gt;
&lt;li&gt;Clicking on the text of a marker in the marker ruler moves the
playback pointer to that marker&amp;rsquo;s location.&lt;/li&gt;
&lt;li&gt;You can set a loop range between two marker positions by clicking in
the area between them with the Shift key pressed.&lt;/li&gt;
&lt;li&gt;move to marker prev|next with C-,|.&lt;/li&gt;
&lt;li&gt;Rosegarden also features a &amp;ldquo;quick marker&amp;rdquo; that can be defined [only
one] on the fly with a single key and is useful for jumping to a
specific position during recording. [Quick marker can only be moved,
not removed, but it isn&amp;rsquo;t saved either, so it doesn&amp;rsquo;t matter. C-S-m
insert; S-m jump to; C-1,1? !!!]&lt;/li&gt;
&lt;li&gt;Ranges and loops allow you to highlight a period of time in the main
ruler, used for editing operations and looping during playback.&lt;/li&gt;
&lt;li&gt;To set the current range, click and drag with the Shift key pressed on
the main ruler or between marker positions in the marker ruler.&lt;/li&gt;
&lt;li&gt;Range editing enables you to cut, copy, and paste sections of music
within the defined range, including segments, tempos, and time
signatures.&lt;/li&gt;
&lt;li&gt;You can insert an empty range at the current playback position to
create space for composition using the Edit-&amp;gt;Insert Range menu
function.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;u&gt;Triggered segments&lt;/u&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A triggered segment in Rosegarden is a segment that doesn&amp;rsquo;t appear on
the main canvas but is triggered during playback by specific notes in
other segments.&lt;/li&gt;
&lt;li&gt;Triggered segments are managed through a window accessible via the
Segments-&amp;gt;Manage Triggered Segments option.&lt;/li&gt;
&lt;li&gt;To create a new triggered segment, copy a segment or part of a segment
to the clipboard, then use the Edit-&amp;gt;Paste as New Triggered Segment
menu option in the manager window.&lt;/li&gt;
&lt;li&gt;Triggered segments can be stretched or squashed to match the duration
of the triggering note, and their pitch and velocity can be adjusted
to match the triggering event.&lt;/li&gt;
&lt;li&gt;Playback timing options for triggered segments include playing as
stored, truncating if longer than the note, ending at the same time as
the note, or stretching/squashing to match the note duration.&lt;/li&gt;
&lt;li&gt;Triggered segments may contain silence at the start or end, which will
be played and adjusted as well.&lt;/li&gt;
&lt;li&gt;It&amp;rsquo;s not possible to make a triggered segment start playing before the
start time of its triggering note, trigger a segment from within
another triggered segment, or trigger audio segments.&lt;/li&gt;
&lt;li&gt;Editing a triggered segment affects all the notes that trigger it, not
just the one used for editing. [All this sort of works, but needs
experimenting !!!]&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;4-the-transport&#34; class=&#34;anchor-header&#34;&gt;4. The Transport &lt;a class=&#34;anchor-link&#34; href=&#34;#4-the-transport&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;[Much of this is irrelevant now since we are interested in notation -
the only part that may be of interest is if we record midi in real-time
and quantize.] &lt;u&gt;Overview&lt;/u&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The Transport in Rosegarden controls playback and displays the
playback pointer&amp;rsquo;s position.&lt;/li&gt;
&lt;li&gt;You can activate the Transport if it&amp;rsquo;s not visible by going to
Settings-&amp;gt;Show Transport.&lt;/li&gt;
&lt;li&gt;The Transport displays time reached by the playback pointer in seconds
by default but can be switched to show musical time (bar and beat
counts), musical time with a metronome, or audio sample frame times.&lt;/li&gt;
&lt;li&gt;It can toggle the display to show time remaining until the end of the
composition.&lt;/li&gt;
&lt;li&gt;Main controls on the Transport include starting and pausing playback,
fast-forwarding, rewinding, stopping, and jumping to the beginning or
end of the composition.&lt;/li&gt;
&lt;li&gt;The Transport also shows the tempo and time signature in effect at the
current playback position, which can be adjusted by double-clicking on
them.&lt;/li&gt;
&lt;li&gt;You can enter a precise time for the playback position by
double-clicking anywhere on the main time display in the Transport
window.&lt;/li&gt;
&lt;li&gt;Additional controls and a MIDI event display are available in the
bottom flap of the Transport, which can be toggled on or off.&lt;/li&gt;
&lt;li&gt;These additional controls include buttons for recording, setting loop
start and end points, soloing tracks, controlling metronomes, and
silencing MIDI devices (the panic button).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;u&gt;Recording&lt;/u&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;To record a new segment into a track in Rosegarden, ensure the
appropriate tracks are armed for recording by selecting the red (for
audio tracks) or yellow (for MIDI tracks) LED-style buttons on the
track labels.&lt;/li&gt;
&lt;li&gt;Use the Transport&amp;rsquo;s record control to start the transport, play the
existing composition, and simultaneously record into the selected
track(s).&lt;/li&gt;
&lt;li&gt;Rosegarden allows you to record multiple MIDI and audio tracks
simultaneously, provided your computer has enough power and sufficient
disk space.&lt;/li&gt;
&lt;li&gt;Be cautious not to leave tracks selected when you intend to record in
a different location.&lt;/li&gt;
&lt;li&gt;Punch-in record, toggled with the Space bar, lets you switch between
playback and recording without stopping the transport or arm for
recording when the transport is stopped.&lt;/li&gt;
&lt;li&gt;When recording to MIDI tracks, the recording source is determined by
the MIDI devices selected in the MIDI device manager, filtered through
the track level recording filter and global MIDI filters.&lt;/li&gt;
&lt;li&gt;For audio tracks, the recording source for each track is the input
selected for that track&amp;rsquo;s instrument in the instrument parameter box,
which can be an external audio input or an audio submaster/master.&lt;/li&gt;
&lt;li&gt;By default, audio tracks record from the soundcard&amp;rsquo;s first available
physical record input, but you can use a JACK connection tool to
connect other JACK audio applications to the input.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;u&gt;Synchronising to external transports&lt;/u&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Rosegarden supports the JACK transport mechanism for synchronizing its
transport with other JACK applications on the same computer.&lt;/li&gt;
&lt;li&gt;To activate JACK transport, go to Settings-&amp;gt;Configure Rosegarden… and
check the &amp;ldquo;Use JACK transport&amp;rdquo; box.&lt;/li&gt;
&lt;li&gt;When JACK transport is active, multiple applications subscribed to it
share a common transport control, allowing you to start, stop, and
move the transport from any of them.&lt;/li&gt;
&lt;li&gt;Many Linux audio applications that use the JACK audio server also
support JACK transport. Check their documentation for details.&lt;/li&gt;
&lt;li&gt;Rosegarden also supports MIDI Time Code (MTC) synchronization in both
master and slave modes.&lt;/li&gt;
&lt;li&gt;MTC synchronization is useful for synchronizing Rosegarden with
hardware MTC-capable devices or software on other computers connected
via MIDI.&lt;/li&gt;
&lt;li&gt;To set Rosegarden as the MTC Master, go to Settings-&amp;gt;Configure
Rosegarden… and in the MIDI page&amp;rsquo;s MIDI Sync tab, select &amp;ldquo;MTC Master&amp;rdquo;
from the MIDI Time Code menu.&lt;/li&gt;
&lt;li&gt;To make Rosegarden an MTC Slave, select &amp;ldquo;MTC Slave,&amp;rdquo; and Rosegarden&amp;rsquo;s
transport will automatically synchronize with incoming MTC events.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;u&gt;Infrared Remote Controls&lt;/u&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Rosegarden supports infrared remote controls for almost all transport
functions.&lt;/li&gt;
&lt;li&gt;To use infrared remote controls with Rosegarden, you need either the
internal LIRC client (optional feature at compile time) or the KDE
IRKick application (KDE LIRC daemon) available in your Linux
distribution&amp;rsquo;s repositories.&lt;/li&gt;
&lt;li&gt;You also need to install and configure the LIRC server daemon, with
specific details depending on your remote control and receiver.&lt;/li&gt;
&lt;li&gt;For more information and details about the internal LIRC client
configuration file and IRKick basics, you can refer to Rosegarden&amp;rsquo;s
website and the LIRC website.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;5-the-studio&#34; class=&#34;anchor-header&#34;&gt;5. The Studio &lt;a class=&#34;anchor-link&#34; href=&#34;#5-the-studio&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;u&gt;Devices, instruments and connections&lt;/u&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Rosegarden refers to everything related to the sound systems attached
to the computer as the &amp;ldquo;Studio.&amp;rdquo;&lt;/li&gt;
&lt;li&gt;The Studio includes information about MIDI and audio hardware,
connections, configurations, MIDI patches, and more.&lt;/li&gt;
&lt;li&gt;Three essential terms in the Studio context are: Device, Instrument,
and Connection.&lt;/li&gt;
&lt;li&gt;A &amp;ldquo;Device&amp;rdquo; in Rosegarden is something capable of producing sounds,
which can be a MIDI or audio device.&lt;/li&gt;
&lt;li&gt;An &amp;ldquo;Instrument&amp;rdquo; is a sound-producing entity within a device that you
can assign tracks to, controlling the sound they produce.&lt;/li&gt;
&lt;li&gt;A &amp;ldquo;Connection&amp;rdquo; specifies the physical MIDI port a MIDI device is
attached to and can be configured in the MIDI device manager.&lt;/li&gt;
&lt;li&gt;Rosegarden may create default devices for available connections on
startup, but it&amp;rsquo;s essential to configure them to match the actual
hardware setup.&lt;/li&gt;
&lt;li&gt;The studio setup is stored with every Rosegarden-format file you save.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;u&gt;Managing MIDI devices&lt;/u&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The MIDI device manager dialog in Rosegarden displays available MIDI
devices and their connections.&lt;/li&gt;
&lt;li&gt;You can access this dialog through Studio-&amp;gt;Manage MIDI Devices.&lt;/li&gt;
&lt;li&gt;Default device configurations are provided at startup, but you can
modify them in this dialog.&lt;/li&gt;
&lt;li&gt;&amp;ldquo;Play devices&amp;rdquo; in the dialog provide targets for MIDI tracks, with
each Play device having 16 instruments to assign tracks to.&lt;/li&gt;
&lt;li&gt;By assigning a connection to a Play device, tracks assigned to it will
play to the appropriate channel of any MIDI synth connected to that
connection.&lt;/li&gt;
&lt;li&gt;&amp;ldquo;Record devices&amp;rdquo; represent potential sources for recording MIDI, and
you can make them current for recording by using the checkboxes in the
dialog.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;u&gt;Managing banks and programs for MIDI devices&lt;/u&gt;!!!&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Each MIDI device in Rosegarden corresponds to a set of instruments,
and each instrument corresponds to a channel on your MIDI synth.&lt;/li&gt;
&lt;li&gt;You can assign tracks to these instruments and choose which sounds
(voices) they produce, but Rosegarden needs to know the names for all
available voices.&lt;/li&gt;
&lt;li&gt;The dialog for managing banks and programs allows you to attach banks
of programs (voice names) to your MIDI devices, enabling you to set
each instrument on a device to use one of these voices.&lt;/li&gt;
&lt;li&gt;You can import program names from device (&amp;quot;.rgd&amp;quot;) files or create a
new bank manually if there is no existing .rgd file for your synth.&lt;/li&gt;
&lt;li&gt;Percussion key mappings are available for percussion programs, and
they can be defined in the .rgd file.&lt;/li&gt;
&lt;li&gt;For soft-synths or soundcard synths using SoundFont (.sf2) files,
program names can be loaded directly from the .sf2 file into the
dialog.&lt;/li&gt;
&lt;li&gt;Some MIDI devices use a &amp;ldquo;variations&amp;rdquo; scheme, and you should enter
program names in a bank format. Rosegarden can support devices with
variations, and you can use the &amp;ldquo;Show Variation list based on MSB/LSB&amp;rdquo;
option to display variations instead of banks in an instrument
parameter box.&lt;/li&gt;
&lt;li&gt;When importing a MIDI file, Rosegarden uses the existing studio setup
to map MIDI programs to instruments, so ensure your studio is
correctly configured for your devices before importing MIDI files to
avoid losing program data.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;u&gt;Audio Routing&lt;/u&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Any Rosegarden track assigned to an audio or synth plugin instrument
becomes part of Rosegarden&amp;rsquo;s audio routing system.&lt;/li&gt;
&lt;li&gt;There are 16 audio instruments and 16 synth plugin instruments, each
with adjustable parameters such as fader level, pan, and effects.&lt;/li&gt;
&lt;li&gt;The input connection of an instrument defines where Rosegarden reads
audio data from when recording to that instrument. Common settings
include external audio inputs, Rosegarden&amp;rsquo;s built-in audio submasters,
or the master output for mixdowns.&lt;/li&gt;
&lt;li&gt;The output connection of an instrument defines where the audio goes
when played. Instruments can send audio to Rosegarden&amp;rsquo;s master output
or up to eight internal submaster busses for grouping instruments.&lt;/li&gt;
&lt;li&gt;Rosegarden supports pre-fader insert effects slots for each audio
instrument but does not yet support effects on submaster busses or
send effects. Users can achieve similar results using external JACK
effects and mixing.&lt;/li&gt;
&lt;li&gt;Further details about audio routing, mixing, and effects can be found
in the audio mixer, instrument parameter box, and audio plugins
sections.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;u&gt;MIDI Routing&lt;/u&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Rosegarden features MIDI Thru, which allows for the instant sending of
incoming MIDI events to specific output devices and MIDI channels.&lt;/li&gt;
&lt;li&gt;MIDI Thru is enabled by default in Rosegarden but can be globally
disabled through the menu option Studio-&amp;gt;MIDI Thru Routing if you
prefer to use an external MIDI routing system.&lt;/li&gt;
&lt;li&gt;There is a global filter for MIDI event types that lets you choose
which event types to route and which to ignore. Details about this
filter can be found in the MIDI filters section.&lt;/li&gt;
&lt;li&gt;MIDI Thru routing behaves differently when Rosegarden is playing or
stopped compared to when it is recording.&lt;/li&gt;
&lt;li&gt;During playback or when Rosegarden is stopped, MIDI Thru routes events
to the selected track&amp;rsquo;s instrument, indicated by the highlighted track
name.&lt;/li&gt;
&lt;li&gt;During recording, MIDI events are routed to the armed track
instruments based on the recording filters. The selected track does
not matter; the routing is based on the filters.&lt;/li&gt;
&lt;li&gt;Each event corresponds to the first track with a matching record
filter.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;u&gt;The Audio Mixer&lt;/u&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Rosegarden&amp;rsquo;s audio mixer window, accessible through Studio-&amp;gt;Audio
Mixer, resembles a hardware audio mixer.&lt;/li&gt;
&lt;li&gt;It allows you to view and modify the state of multiple audio
instruments simultaneously.&lt;/li&gt;
&lt;li&gt;The audio mixer provides controls such as playback level meters, fader
controls, routing options, pan settings, mono/stereo toggles, and
effects plugin slots for each audio and synth plugin instrument.&lt;/li&gt;
&lt;li&gt;You can also manage the master audio output level, record level, and
submaster output levels within the audio mixer.&lt;/li&gt;
&lt;li&gt;The Settings menu in the audio mixer is significant and includes audio
routing settings for stereo audio record inputs and the number of
submasters.&lt;/li&gt;
&lt;li&gt;Adjusting the number of submasters explicitly to &amp;ldquo;None&amp;rdquo; when they are
not in use can lead to a small performance improvement.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;u&gt;The MIDI Mixer&lt;/u&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The MIDI Mixer in Rosegarden allows users to view and edit instrument
parameter values for multiple MIDI instruments simultaneously.&lt;/li&gt;
&lt;li&gt;The window is organized with tabs, one for each playback MIDI device
in the studio configuration.&lt;/li&gt;
&lt;li&gt;Selecting a device tab reveals controls for the 16 instruments
associated with that device.&lt;/li&gt;
&lt;li&gt;The displayed controls are based on the settings in the control
parameter manager and include volume adjustments (corresponding to
MIDI volume control change) and approximate output level indicators.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;u&gt;Audio Plugins&lt;/u&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Rosegarden uses audio plugins, which are separate software pieces that
can manipulate audio signals in various ways. They are categorized
into effects plugins and synth plugins.&lt;/li&gt;
&lt;li&gt;Effects plugins alter audio signals, such as reverb, delay effects, or
compression.&lt;/li&gt;
&lt;li&gt;Each audio or synth plugin instrument in Rosegarden has five
associated effects slots, which can be used to chain up to five
effects onto the audio signal before it undergoes fader level and pan
processing.&lt;/li&gt;
&lt;li&gt;To load an effects plugin into a slot, you can click its button on the
instrument parameter box or in the audio mixer window.&lt;/li&gt;
&lt;li&gt;Synth plugins are used to generate sounds from note event segments and
can replace hardware or standalone soft-synth MIDI devices.&lt;/li&gt;
&lt;li&gt;Synth plugins provide better control, repeatability, and routing
options compared to external MIDI devices.&lt;/li&gt;
&lt;li&gt;Synth plugins can be configured by selecting a track, assigning it to
a synth plugin instrument, and then loading a synth plugin.&lt;/li&gt;
&lt;li&gt;Some plugins may have their own editor windows for more extensive
control.&lt;/li&gt;
&lt;li&gt;Using plugins can consume CPU resources and may affect reliability, as
crashes or hangs in a plugin can impact Rosegarden&amp;rsquo;s stability.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;u&gt;Metronomes&lt;/u&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Rosegarden has two built-in metronomes, one for recording and one for
normal playback.&lt;/li&gt;
&lt;li&gt;These metronomes send notes to a MIDI instrument and use the same
instrument, pitch, and velocity information.&lt;/li&gt;
&lt;li&gt;You can configure the metronomes by going to Studio-&amp;gt;Manage
Metronome, where you can select a MIDI instrument, set the resolution
(beat, subdivision, or bar), pitch, and velocities.&lt;/li&gt;
&lt;li&gt;The actual voice the metronome uses depends on the instrument
selected, similar to how MIDI tracks depend on their assigned
instruments.&lt;/li&gt;
&lt;li&gt;The record and play metronomes can be enabled or disabled using the
metronome button in the Transport window. By default, the record
metronome is on, and the play metronome is off.&lt;/li&gt;
&lt;li&gt;There&amp;rsquo;s also a &amp;ldquo;visual metronome&amp;rdquo; feature that makes the transport
window flash brightly to mark each beat during playback.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;u&gt;MIDI filters&lt;/u&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The MIDI filters dialog in Rosegarden allows you to specify which MIDI
events should be ignored or accepted by the software.&lt;/li&gt;
&lt;li&gt;You can use checkboxes in this dialog to indicate which types of MIDI
events you want to filter out or record.&lt;/li&gt;
&lt;li&gt;This feature is helpful for customizing how Rosegarden handles MIDI
events when forwarding them using MIDI THRU or recording them.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;u&gt;External MIDI control surfaces&lt;/u&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Rosegarden can be controlled to some extent by an external MIDI
device, allowing you to adjust mixer settings and other features.&lt;/li&gt;
&lt;li&gt;To set up external MIDI control, you need to use an ALSA MIDI
connection manager like qjackctl to connect your MIDI controller
device to Rosegarden&amp;rsquo;s &amp;ldquo;external controller&amp;rdquo; input and output MIDI
ports.&lt;/li&gt;
&lt;li&gt;MIDI control change messages can be used to adjust mixer track
settings based on the incoming MIDI channel from your controller
device.&lt;/li&gt;
&lt;li&gt;Rosegarden also supports MIDI controller numbers 81 and 82 for
changing the currently active window and the selected track in the
main window, respectively.&lt;/li&gt;
&lt;li&gt;The behavior of MIDI controller number 82 depends on the number of
tracks in the window, ensuring it uses the full MIDI controller data
range.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;6-special-parameters&#34; class=&#34;anchor-header&#34;&gt;6. Special Parameters &lt;a class=&#34;anchor-link&#34; href=&#34;#6-special-parameters&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;u&gt;The Track Parameter Box&lt;/u&gt; assign instruments to tracks control what
incoming MIDI data from which sources will be recorded control staff
attributes govern how MIDI segments will be created for each track&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Playback parameters alternative mechanism to the menu-based system of
instrument assignment&lt;/li&gt;
&lt;li&gt;Track recording filters control what events are recorded to this track
all setting is safe and convenient if you are recording only one MIDI
track&lt;/li&gt;
&lt;li&gt;Staff export options normal, small, or tiny size&lt;/li&gt;
&lt;li&gt;Create segments with means of controlling many of the segment
parameters for segments that don&amp;rsquo;t yet exist aimed especially at
notation users&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;u&gt;The Segment Parameter Box&lt;/u&gt; modify some aspects of the selected
segments &lt;u&gt;The Instrument Parameter Box&lt;/u&gt; which instrument is
assigned to the current selected track&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;MIDI Instrument Parameters percussion toggle that controls whether
only percussion programs should be offered shows you the controllers
available for this device&lt;/li&gt;
&lt;li&gt;Audio Instrument Parameters two main faders Audio instruments are
always ultimately stereo five buttons at lower left are the effects
slots.&lt;/li&gt;
&lt;li&gt;Synth Plugin Instrument Parameters most important control here is the
button at top left&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;7-quantization&#34; class=&#34;anchor-header&#34;&gt;7. Quantization &lt;a class=&#34;anchor-link&#34; href=&#34;#7-quantization&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Quantization is the process of adjusting note and event positions so
that they align with exact beat divisions, typically used to achieve
precision or clear notation.&lt;/li&gt;
&lt;li&gt;In Rosegarden, you can perform general quantization using
&lt;strong&gt;Segments-&amp;gt;Quantize&lt;/strong&gt; in the main window or &lt;strong&gt;Adjust-&amp;gt;Quantize&lt;/strong&gt; in
matrix or notation editors.&lt;/li&gt;
&lt;li&gt;The quantize dialog in Rosegarden provides various quantization
options, including the
&lt;ul&gt;
&lt;li&gt;grid quantizer moves the start times of notes so that they start at
the nearest point on some grid has adjustable parameters: base grid
unit, swing,iterative amount, duration with start times several ways
to apply grid quantization, including using the Quantize menu in the
Segment Parameter Box and a quantize control in the matrix view.&lt;/li&gt;
&lt;li&gt;legato quantizer carries out a simple grid quantization, and also
adjusts the note durations so as to remove any gaps between notes;
also available with Adjust-&amp;gt;Quantize-&amp;gt;Legato function in the
Matrix editor&lt;/li&gt;
&lt;li&gt;heuristic notation quantizer adjust note start times and durations
to produce readable notation can configure complexity, base grid
unit, tuplet level, re-beam, articulation, tie, split-and-tie&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Rosegarden provides&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Explore the possibilities here thoroughly including raw note ruler !!!&lt;/p&gt;
&lt;h2 id=&#34;8-the-matrix-editor&#34; class=&#34;anchor-header&#34;&gt;8. The Matrix editor &lt;a class=&#34;anchor-link&#34; href=&#34;#8-the-matrix-editor&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;u&gt;The Grid and Quantize controls&lt;/u&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The Rosegarden matrix editor is used for viewing and editing music in
a grid format, with each note represented as a block at a height
corresponding to its pitch.&lt;/li&gt;
&lt;li&gt;Each matrix editor window displays a single segment of music, and you
can access it by right-clicking on a segment in the main canvas and
selecting the matrix editor from the menu.&lt;/li&gt;
&lt;li&gt;The matrix editor provides Grid and Quantize controls in its main
toolbar.&lt;/li&gt;
&lt;li&gt;The Grid menu controls the size of the visible grid and the time
resolution for note insertion and movement, allowing for snapping to
grid points.&lt;/li&gt;
&lt;li&gt;The Quantize menu performs quantization, adjusting selected notes or
the entire segment to a chosen grid resolution.&lt;/li&gt;
&lt;li&gt;The Quantize menu continuously shows the current quantization
resolution for the selected segment or notes.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;u&gt;Inserting notes&lt;/u&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;In the matrix view of Rosegarden, you can enter notes using various
methods.&lt;/li&gt;
&lt;li&gt;The simplest way is to use the mouse with the pencil tool selected.
Click and drag to place a note on the matrix editor at a specific time
and pitch.&lt;/li&gt;
&lt;li&gt;The Select tool (arrow) also allows you to draw notes using the middle
mouse button or the left mouse button with Ctrl pressed.&lt;/li&gt;
&lt;li&gt;Note durations are snapped to the grid unit defined by the Grid
setting, which you can adjust.&lt;/li&gt;
&lt;li&gt;You can enter notes using the PC keyboard by selecting the desired
duration with number keys and then pressing pitch keys (A, S, D, etc.)
to input notes. Shift sharpens notes, and Shift+Ctrl flattens them.&lt;/li&gt;
&lt;li&gt;For notes an octave higher or lower, use the corresponding keys on the
keyboard.&lt;/li&gt;
&lt;li&gt;All insertion commands are available in the Tools menu, and keyboard
shortcuts are designed for a QWERTY-layout keyboard. [use keyboard
shortcuts to get dvorak? !!!]&lt;/li&gt;
&lt;li&gt;You can also enter notes using a MIDI keyboard or other MIDI control
device, with durations determined by the Grid setting, in a process
called &amp;ldquo;step recording.&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;u&gt;Selecting notes&lt;/u&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;In the matrix editor of Rosegarden, you can select notes using the
Select (arrow) tool.&lt;/li&gt;
&lt;li&gt;To select notes, outline a rectangular area that contains the notes
you want to select. Clicking on a single event selects only that
event.&lt;/li&gt;
&lt;li&gt;Holding Shift while selecting notes adds the new selection to any
existing selection instead of replacing it.&lt;/li&gt;
&lt;li&gt;To clear a selection, click in an empty space on the matrix editor or
press the Escape key.&lt;/li&gt;
&lt;li&gt;You can select all notes of a specific pitch by shift-clicking on a
key in the piano keyboard on the left side of the matrix editor.
Shift-click and drag to select a range of pitches.&lt;/li&gt;
&lt;li&gt;The Edit-&amp;gt;Filter Selection function allows you to filter a range of
events in various categories out of your selection, either inclusively
or exclusively. [This is neat, though I&amp;rsquo;m not sure what to use it
for.]&lt;/li&gt;
&lt;li&gt;Once your selection is filtered, you can manipulate it using
conventional editing methods.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;u&gt;Moving and copying notes&lt;/u&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;In the Rosegarden matrix editor, you can move notes in both time and
pitch.&lt;/li&gt;
&lt;li&gt;To move notes, you can either click and drag them with the Move tool
or select them and then drag them using the Select tool.&lt;/li&gt;
&lt;li&gt;To copy notes, select them and use standard copy and paste functions.
After pasting, the pasted notes will be selected, and you can further
drag them to their desired position.&lt;/li&gt;
&lt;li&gt;Alternatively, you can copy notes by selecting them with the Select
tool and then holding Ctrl while click-and-dragging the selected notes
to a new position.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;9-the-percussion-matrix-editor&#34; class=&#34;anchor-header&#34;&gt;9. The Percussion Matrix editor &lt;a class=&#34;anchor-link&#34; href=&#34;#9-the-percussion-matrix-editor&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;The Percussion Matrix editor is similar to the regular Matrix editor
but displays pitch names on the vertical scale instead of a piano
keyboard.&lt;/li&gt;
&lt;li&gt;It is designed for use with percussion programs on MIDI instruments,
where each note pitch corresponds to a different percussion sound.&lt;/li&gt;
&lt;li&gt;The display of pitch names depends on whether the segment being edited
is playing through a percussion instrument with associated key
mappings to define the names.&lt;/li&gt;
&lt;li&gt;If key mappings are not defined, the standard matrix view piano
keyboard will be displayed instead.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;10-the-notation-editor&#34; class=&#34;anchor-header&#34;&gt;10. The Notation editor &lt;a class=&#34;anchor-link&#34; href=&#34;#10-the-notation-editor&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;u&gt;Notes&lt;/u&gt; To optimize windowq with leftwm:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Put track editor into float H-S-t&lt;/li&gt;
&lt;li&gt;Open notation editor as float&lt;/li&gt;
&lt;li&gt;Resize notation editor with H-&amp;lt;mouse-right&amp;gt; and it will come to
the top&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;(This system works really well!)&lt;/p&gt;
&lt;p&gt;Midi -&amp;gt; rg doesn&amp;rsquo;t translate well for ly always eg grace notes are
written out.&lt;/p&gt;
&lt;p&gt;EAN experiment as needed&lt;/p&gt;
&lt;p&gt;&lt;u&gt;Introduction&lt;/u&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The Rosegarden Notation editor allows users to view and edit one or
more staffs in traditional score notation.&lt;/li&gt;
&lt;li&gt;It supports various musical elements such as chords, overlapping and
nested beamed groups, triplets, tuplets, grace notes, dynamics,
accents, and text.&lt;/li&gt;
&lt;li&gt;While it provides good support for music notation, it does not offer
the same level of fine control over layout as dedicated score editing
programs.&lt;/li&gt;
&lt;li&gt;Rosegarden is not focused on producing typeset-quality scores but can
export LilyPond files that may serve as a basis for typesetting.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;u&gt;Single and multiple staffs&lt;/u&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;There are three ways to open a notation editor in Rosegarden:
double-clicking on a segment, using the &amp;ldquo;Open in Default Editor&amp;rdquo; menu
function (Return key), or using the &amp;ldquo;Open in Notation Editor&amp;rdquo; menu
functions.&lt;/li&gt;
&lt;li&gt;Double-clicking on a segment opens it in the notation editor, and you
can also open multiple selected segments together in a single notation
window by holding Shift and double-clicking the last one.&lt;/li&gt;
&lt;li&gt;The &amp;ldquo;Open in Default Editor&amp;rdquo; menu function works similarly to
double-clicking and opens selected segments in the default editor.&lt;/li&gt;
&lt;li&gt;The &amp;ldquo;Open in Notation Editor&amp;rdquo; menu function allows you to select
segments and open them in the notation editor. You can switch between
staffs within the notation editor, with the topmost staff being the
default current staff.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;u&gt;Linear and page layouts&lt;/u&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The default display mode in the notation editor is the Linear layout,
where staffs are shown one on top of another in a single horizontally
scrollable line. [All functions including various rulers are
available here, so this should be where we do most of the work.]&lt;/li&gt;
&lt;li&gt;The notation editor also offers two page-based layouts: Continuous
Page and Multiple Page.&lt;/li&gt;
&lt;li&gt;In Continuous Page layout, music is displayed in one infinitely-tall
page with each staff breaking at the end of a line.&lt;/li&gt;
&lt;li&gt;In Multiple Page layout, music is divided into real pages based on the
specified printing resolution.&lt;/li&gt;
&lt;li&gt;Some display and editing functions work in both page layout modes and
linear layout.&lt;/li&gt;
&lt;li&gt;You can switch between these layout modes using menu functions: Linear
Layout, Continuous Page Layout, and Multiple Page Layout.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;u&gt;Rulers and cursors&lt;/u&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The Rosegarden Notation editor includes two graduated rulers: one at
the top and one at the bottom of the main notation canvas.&lt;/li&gt;
&lt;li&gt;There are several types of cursors associated with these rulers,
including the insert cursor (purple) and the playback pointer (blue).&lt;/li&gt;
&lt;li&gt;The insert cursor marks the point for operations like insert and paste
and can be repositioned using various methods, including clicking on
the ruler or using arrow keys.&lt;/li&gt;
&lt;li&gt;The playback pointer indicates the current playback or record position
and can also be repositioned.&lt;/li&gt;
&lt;li&gt;The raw note ruler is useful for editing quantized notation,
displaying the actual performance duration of notes. [Can probably
tweak durations with it. !!!]&lt;/li&gt;
&lt;li&gt;The chord name ruler attempts to display the chords that are sounding
in the piece but is for informational purposes only. [Can be useful
to understand chord progressions. !!!]&lt;/li&gt;
&lt;li&gt;The tempo ruler displays the global tempo and allows for entering,
editing, and manipulating tempo changes. [Can ramp with this, though
doing so may be better in lmms. !!!]&lt;/li&gt;
&lt;li&gt;These rulers and cursors are typically shown in Linear layout mode and
may not all be displayed by default [can be changed in View].&lt;/li&gt;
&lt;li&gt;You can enable or disable certain rulers and cursors through settings
and configuration options.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;u&gt;Tools and selections&lt;/u&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The Rosegarden Notation editor offers various tools for editing,
including selection, erasing, inserting notes, rests, text, and more.&lt;/li&gt;
&lt;li&gt;Functions in the editor fall into 3 categories like tools, functions
that operate on selections, and drag operations.&lt;/li&gt;
&lt;li&gt;Choosing a tool changes the default behavior of the mouse buttons on
the notation canvas.&lt;/li&gt;
&lt;li&gt;Selections are made using the Select (arrow) tool, which allows you to
outline a rectangular area to select events. Selection are only from
one staff and can be filtered.&lt;/li&gt;
&lt;li&gt;Shift will accumulate selection contents. Double-click selects bar.
Triple-click selects segment.&lt;/li&gt;
&lt;li&gt;Many menu functions require a selection to be made on the canvas
before they can be used, and the Edit menu offers options for
selecting extended areas.&lt;/li&gt;
&lt;li&gt;Dragging can also be used for editing, such as changing pitch by
dragging note heads up or down or changing the timing of notes by
dragging them left or right.&lt;/li&gt;
&lt;li&gt;There are functions for transposing notes by a specified interval,
including transposing by semitones or intervals with a dialog for
customization.&lt;/li&gt;
&lt;li&gt;Double-clicking on a single event opens an editing dialog for that
event.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;u&gt;Inserting notes and rests&lt;/u&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;To insert a note in the Rosegarden Notation editor, select a note
duration from the toolbar and then click on the staff at the desired
point.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Accidentals can be selected from the toolbar to insert sharpened or
flattened notes, or you can use the &amp;ldquo;Follow previous accidental&amp;rdquo; icon
to follow the last accidental used at the same height on the staff.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Inserting a note at the same time as an existing note of different
duration will create chords and possibly ties.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Adding a note exactly over an existing note of different duration will
change the duration of the existing note.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Adding a rest at the same time as an existing note will silence the
note for the duration of the rest.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Typing notes and rests with the PC keyboard involves selecting a
duration and pitch using number and letter keys. You can also toggle
between dotted and undotted durations [with . and triplet version of
note with G].&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Rests can be inserted by pressing &amp;ldquo;P&amp;rdquo; [pressing P will change notes
into equivalent rests], and you can switch between note and rest
tools using &amp;ldquo;T&amp;rdquo;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Chord mode can be activated using the &amp;ldquo;H&amp;rdquo; key to insert subsequent
notes at the same time as the last one. [This is quite effective if
entering notes from a computer keyboard.]&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Keyboard shortcuts for changing note durations are available, and
holding Ctrl while pressing a number key selects the corresponding
dotted-note tool.[Doesn&amp;rsquo;t work !!!]&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Step recording with a MIDI keyboard is possible by configuring the
keyboard as the default MIDI record device, selecting a duration, and
using the step recording button on the toolbar or the Tools menu.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Note durations can be changed using keyboard shortcuts, and you can
enter notes of different durations during step recording.&lt;/p&gt;
&lt;p&gt;Be aware of some of these shortcuts over time because they can
simplify entry. !!!&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;u&gt;Clef and key&lt;/u&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;In Rosegarden, time-related changes like tempo and time signatures
apply uniformly to all staffs, ensuring consistent playback and
notation.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[You can change tempos, and time signatures in the Composition
dropdown.]&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[You can change clefs, keys, in the Segment dropdown.]&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;When changing the clef, you can choose to maintain current pitches or
transpose into an appropriate octave for existing notes following the
clef change.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;When changing the key, you can select the key signature and decide
whether to transpose it according to segment transposition or use it
as specified.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The scope of the key change can be applied to the current segment only
or to all segments on all tracks at that time.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;You can specify how existing notes following a key change should
behave, whether maintaining their current pitches, maintaining current
accidentals, or attempting to transpose into the new key.&lt;/p&gt;
&lt;p&gt;Some of these may require trying out as necessary. !!!&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;u&gt;Text, Lyrics, and LilyPond directives&lt;/u&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Rosegarden allows you to add various types of text to a staff,
including single text items for annotations, lyrics, and LilyPond
directives.&lt;/li&gt;
&lt;li&gt;The Text tool is used for creating single text items and lyrics. You
can click at the point where you want to add text, and a dialog box
will appear for you to enter the text and choose its intended purpose.&lt;/li&gt;
&lt;li&gt;There are different styles or purposes for text, such as Dynamic,
Direction, Tempo, Chord, and more. These styles determine how the text
is displayed. [Some annotations may be turned off by default.]&lt;/li&gt;
&lt;li&gt;Lyrics can be edited using the Lyric editor, which follows specific
formatting rules with bar lines and syllables. [Do not do lyrics in
rg - go to lilypond instead.]&lt;/li&gt;
&lt;li&gt;LilyPond directives are special text used for exporting .ly files with
extended functionality not available through Rosegarden&amp;rsquo;s native
interface.&lt;/li&gt;
&lt;li&gt;LilyPond directives include Segno, Coda, Alt1, Alt2, double barlines,
terminating barlines, dashed barlines, glissando, arpeggio symbols,
and font size adjustments like Tiny, Small, and Normal.&lt;/li&gt;
&lt;li&gt;Proper placement of LilyPond directives within a measure can affect
their function and appearance in the exported score. [Some
experimentation is required especially with the Lilypond directives
which can likely be very helpful if they translate over properly in to
the text - they really don&amp;rsquo;t look particularly good in the notation
editor though because they appear as text. However, clicking on the
note using T gives choice of directive and that looks just fine in the
lp export!]&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;u&gt;Guitar Chords&lt;/u&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;You can add guitar chord diagrams to a notation track in Rosegarden.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;To add a guitar chord diagram, toggle the Guitar Chord button and then
click on the area where you want to add it.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Rosegarden provides a chord dictionary with common chord fingerings
categorized as beginner, common, and all.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;You can also create your own chord fingerings by clicking the &amp;lsquo;New&amp;rsquo;
button, which opens a chord editor where you can draw the fingering,
specify the root, chord extension, and starting fret number.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;When adding your own fingerings, you can type custom extension values,
but they will only be available in the &amp;lsquo;all&amp;rsquo; list.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;You can delete and edit your custom chords, but predefined dictionary
chords cannot be changed, and any mistakes should be reported to the
development team.&lt;/p&gt;
&lt;p&gt;This is actually pretty neat stuff because rg figures out the chord
for you, though it can be changed.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;u&gt;Slurs and hairpins&lt;/u&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Slurs and hairpins in Rosegarden are stored as events, similar to
notes or rests.&lt;/li&gt;
&lt;li&gt;To create a slur or hairpin, select the area (a series of notes or
other elements) you want it to cover, then use the &amp;ldquo;Add Slur,&amp;rdquo; &amp;ldquo;Add
Crescendo,&amp;rdquo; or &amp;ldquo;Add Decrescendo&amp;rdquo; options from the Phrase menu.&lt;/li&gt;
&lt;li&gt;The placement of hairpins can be challenging, especially when they run
in line with dynamic markings. Sometimes, their appearance in
Rosegarden&amp;rsquo;s notation editor may differ from the final result when
exported to LilyPond. [There seems to be no cresc or dimin text as lp
offers. Hairpins can be moved sideways but not up|down.]&lt;/li&gt;
&lt;li&gt;Rosegarden&amp;rsquo;s slurs work best when all the stems of the notes are
running in the same direction, and they may need manual repositioning
for better placement. Slurs tend to improve their appearance after
exporting to LilyPond.&lt;/li&gt;
&lt;li&gt;You can remove a slur or hairpin by selecting it with the selection
tool and hitting Delete or by clicking on it with the erase tool
active.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;u&gt;Note stems and slashes&lt;/u&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;In Rosegarden&amp;rsquo;s Notation editor, you can adjust the stem direction of
selected notes using the &amp;ldquo;Stem Direction&amp;rdquo; options found in the Notes
menu.&lt;/li&gt;
&lt;li&gt;These options allow you to set the stems either up or down, or to
revert to the stem direction that Rosegarden would choose
automatically.&lt;/li&gt;
&lt;li&gt;Additionally, the Note menu offers options for adding slashes across
note stems, which are used for notational purposes, such as indicating
short repeated notes or drum rolls. These slashes do not affect
playback or MIDI generation in Rosegarden.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;u&gt;Beams&lt;/u&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Beams in the Rosegarden Notation editor are used for grouping notes
together.&lt;/li&gt;
&lt;li&gt;To add beams to selected notes, use the &amp;ldquo;Beam Group&amp;rdquo; option found in
the Phrase menu.&lt;/li&gt;
&lt;li&gt;To remove a beam from selected notes, use the &amp;ldquo;Unbeam&amp;rdquo; menu option.&lt;/li&gt;
&lt;li&gt;You can have multiple beamed groups simultaneously, but you may need
to manually set stem directions for each group.&lt;/li&gt;
&lt;li&gt;Rosegarden can automatically guess sensible beaming for a piece of
music; use the &amp;ldquo;Auto-Beam&amp;rdquo; option on the Phrase menu to invoke this
feature.&lt;/li&gt;
&lt;li&gt;Automatic beaming is also done when loading a MIDI file, and during
note entry (which can be disabled in settings).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;u&gt;Triplets and other tuplets&lt;/u&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A triplet group consists of three notes or chords played in the time
of two.&lt;/li&gt;
&lt;li&gt;The term &amp;ldquo;tuplet&amp;rdquo; refers to a situation where notes with a total
duration of any given number of units are played in the time of a
different number of units (e.g., nine notes in the time of eight, six
in the time of four).&lt;/li&gt;
&lt;li&gt;Rosegarden&amp;rsquo;s triplet and tuplet menu functions squash existing notes
or rests to play quicker, filling in the leftover space with a final
rest and representing the whole as a tuplet group.&lt;/li&gt;
&lt;li&gt;You can create triplet groups by entering the first two notes, making
them into triplets, and then filling in the rest with the final note.
Alternatively, you can apply the triplet operation before entering any
notes, effectively turning the rest into triplet form and inserting
the notes on top of it. [Good way is to put the 3 notes down, select
them, then triplet with C-r; better way may be to go into triplet mode
with g|G, and just enter the notes.]&lt;/li&gt;
&lt;li&gt;To specify a general tuplet group, you need to know the base note
(e.g., a crotchet) and the ratio of the number of base notes written
to the number played. [Concept should be similar to triplets, but
setup isn&amp;rsquo;t automatic.]&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;EAN!!!&lt;/p&gt;
&lt;p&gt;&lt;u&gt;Paste types&lt;/u&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Rosegarden&amp;rsquo;s Notation editor provides various types of Paste
operations to handle music editing, as traditional cut-and-paste is
less straightforward in music.&lt;/li&gt;
&lt;li&gt;The available Paste types include Restricted, Simple, Open and Paste,
Note Overlay, and Matrix Overlay.&lt;/li&gt;
&lt;li&gt;Restricted Paste requires an existing gap of sufficient duration to
contain the clipboard&amp;rsquo;s contents, while Simple Paste erases events to
create a gap for pasting.&lt;/li&gt;
&lt;li&gt;Open and Paste makes room for the paste by moving subsequent events,
while Note Overlay and Matrix Overlay handle pasting notes in specific
ways with respect to overlaps and ties.&lt;/li&gt;
&lt;li&gt;These paste types can be accessed through the Paste… menu option on
the Edit menu.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Matrix overlay is unclear - seems to be the same as Simple !!!&lt;/p&gt;
&lt;p&gt;&lt;u&gt;Adjusting Notation&lt;/u&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The &amp;ldquo;Normalize Rests&amp;rdquo; function in Rosegarden&amp;rsquo;s Notation editor can be
used to adjust, split, and merge rests to ensure they have correct
durations and fall on appropriate boundaries within the time
signature. [Eg q h q in 4/4 -&amp;gt; w]&lt;/li&gt;
&lt;li&gt;&amp;ldquo;Tie Notes at Barlines&amp;rdquo; is a function designed to split excessively
long notes into shorter tied notes, particularly when they overflow
barlines or cannot be displayed as a single note.&lt;/li&gt;
&lt;li&gt;&amp;ldquo;Split-and-Tie Overlapping Chords&amp;rdquo; is a function used to split and tie
overlapping notes and chords, helping to create neat blocks of chords
and single notes. [!!!]&lt;/li&gt;
&lt;li&gt;&amp;ldquo;Halve Durations&amp;rdquo; and &amp;ldquo;Double Durations&amp;rdquo; functions allow for simple
rescaling of note durations, while more complex rescaling can be
achieved using the &amp;ldquo;Stretch or Squash&amp;rdquo; function. [!!!]&lt;/li&gt;
&lt;li&gt;To reposition notation elements like slurs, hairpins, and text events,
you can use Ctrl-click and drag. However, this method cannot be used
to reposition notes. [Works but not with much control.]&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These are good ways to make the notation neater and thus better formed
for lilypond probably. !!!&lt;/p&gt;
&lt;p&gt;&lt;u&gt;Interpreting Performance Cues in Notation&lt;/u&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;The &amp;ldquo;Interpret&amp;rdquo; function in Rosegarden&amp;rsquo;s Notation editor allows you to
modify note velocities and timings based on indicated dynamics.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Interpretations available include applying text dynamics (e.g., p, mf,
ff), making notes gradually increase or decrease in velocity during
crescendo or decrescendo hairpins, stressing beats, and articulating
slurs, staccato, and tenuto markings.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Text dynamics such as pp, p, mp, mf, f, ff, and fff are matched to set
velocities based on the last &amp;ldquo;Dynamic&amp;rdquo; text seen on the same staff.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Crescendo and decrescendo hairpins adjust note velocities to create a
gradual increase or decrease in loudness.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Stressing beats makes notes landing on bar or beat boundaries slightly
louder than surrounding notes.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Articulating markings like slurs, staccato, and tenuto affect note
lengths, with unslurred notes shortened, staccato notes further
shortened, and notes inside slurs and tenuto markings played at their
full length.&lt;/p&gt;
&lt;p&gt;[Couldn&amp;rsquo;t get this to really work - not important though for
notation. !!!]&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;u&gt;Notation from performance data&lt;/u&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Rosegarden, while primarily a sequencer, offers notation editing
capabilities, which require adjusting note times and durations for
musical precision.&lt;/li&gt;
&lt;li&gt;This quantization, known as &amp;ldquo;notation quantization,&amp;rdquo; improves the
accuracy of notes shown in the notation editor.&lt;/li&gt;
&lt;li&gt;Notation quantization affects only what is visible in notation and
doesn&amp;rsquo;t impact notes played or edited in other views.&lt;/li&gt;
&lt;li&gt;You can see the effects of notation quantization in the notation
editor through the raw note ruler or by highlighting altered note
heads in green.&lt;/li&gt;
&lt;li&gt;Rosegarden provides various quantization parameters that allow you to
customize the quantization process, including complexity, base grid
unit, and tuplet level.&lt;/li&gt;
&lt;li&gt;You can also control how the quantizer tidies up after quantization,
including re-beaming notes, adding articulations like staccato,
tenuto, and slurs, tying notes at barlines, and splitting and tying
overlapping chords.&lt;/li&gt;
&lt;li&gt;These quantization settings can be adjusted to suit different musical
contexts and preferences.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Again more to experiment with in the quantization section. !!!&lt;/p&gt;
&lt;p&gt;&lt;u&gt;Playing ornaments&lt;/u&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Rosegarden supports playback of ornaments using triggered segments.&lt;/li&gt;
&lt;li&gt;To create a new ornament, write out the desired notes, select them,
and use the &amp;ldquo;Note-&amp;gt;Ornaments-&amp;gt;Make Ornament…&amp;rdquo; option. This creates a
triggered segment.&lt;/li&gt;
&lt;li&gt;To make a note play an existing ornament, select it and use
&amp;ldquo;Note-&amp;gt;Ornaments-&amp;gt;Trigger Ornament…&amp;rdquo;&lt;/li&gt;
&lt;li&gt;You can edit the notes played in a triggered ornament by
double-clicking on the triggering note.&lt;/li&gt;
&lt;li&gt;Note that Rosegarden can adjust the pitch of triggered segments to
match their triggering notes but cannot transpose into a different key
or scale position.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Figure out how to setup a file with ornaments defined - didn&amp;rsquo;t get an
answer to this from the rg list, but the article &lt;a href=&#34;https://www.rosegardenmusic.com/tutorials/supplemental/notation-challenge/ornament.html&#34;&gt;Ornaments: Pleasure
and
Pain&lt;/a&gt;
may have a solution. !!!&lt;/p&gt;
&lt;p&gt;&lt;u&gt;Note styles&lt;/u&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Rosegarden allows customization of how different types of notes are
visually represented, including note heads, tails, and fill options.&lt;/li&gt;
&lt;li&gt;Standard styles like Classical, Cross, Triangle, and Mensural are
provided for note appearance.&lt;/li&gt;
&lt;li&gt;You can change the style of individual notes by selecting them and
using the Note Style menu options.&lt;/li&gt;
&lt;li&gt;Each note remembers its chosen style, and this information is saved as
part of the composition.&lt;/li&gt;
&lt;li&gt;You can also set a default style for new notes using the &amp;ldquo;Configure
Rosegarden…&amp;rdquo; option in the Settings menu.&lt;/li&gt;
&lt;li&gt;Advanced users can create custom note styles by describing them in XML
files. The standard styles are also defined in this way.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;u&gt;Note fonts&lt;/u&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Rosegarden comes with a default scalable notation font called Feta,
developed by the LilyPond project, suitable for classical music. [It
seems to be all that is required.]&lt;/li&gt;
&lt;li&gt;Rosegarden supports additional notation fonts, but you need to provide
them in TrueType (.ttf) or PostScript Type-1 (.pfb, .pfa) format and
have the necessary permissions to install them in the Rosegarden
directory.&lt;/li&gt;
&lt;li&gt;To install a supported notation font, copy the font files into the
&amp;ldquo;fonts&amp;rdquo; subdirectory of the Rosegarden installation directory and
restart Rosegarden.&lt;/li&gt;
&lt;li&gt;Supported fonts include Fughetta, Petrucci, Maestro, Opus, Inkpen,
Sonata, Steinberg, and Xinfonia, but it&amp;rsquo;s your responsibility to
ensure you have the legal rights to use them.&lt;/li&gt;
&lt;li&gt;You can also create new mapping files to use new fonts, especially if
they have similar mappings or metrics to existing fonts.&lt;/li&gt;
&lt;li&gt;For more details on customizing fonts and mappings, refer to the
&amp;ldquo;Customising Rosegarden&amp;rdquo; section.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;11-the-event-list-editor&#34; class=&#34;anchor-header&#34;&gt;11. The Event List editor &lt;a class=&#34;anchor-link&#34; href=&#34;#11-the-event-list-editor&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;The Event List editor in Rosegarden displays events within a single
segment in a raw form.&lt;/li&gt;
&lt;li&gt;It allows for precise editing of individual event properties.&lt;/li&gt;
&lt;li&gt;This editor provides a detailed view of events within a segment for
fine-tuning and customization.&lt;/li&gt;
&lt;li&gt;You can access the Event List editor in Rosegarden for working with
events in your compositions.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Probably is merit in learning this for the purpose of fine-tuning. !!!&lt;/p&gt;
&lt;h2 id=&#34;12-customising-rosegarden&#34; class=&#34;anchor-header&#34;&gt;12. Customising Rosegarden &lt;a class=&#34;anchor-link&#34; href=&#34;#12-customising-rosegarden&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;u&gt;Configuring custom notation fonts&lt;/u&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Customizing Rosegarden involves configuring custom notation fonts.&lt;/li&gt;
&lt;li&gt;Unsupported notation fonts in TrueType or Type-1 formats can be
supported through mapping XML files.&lt;/li&gt;
&lt;li&gt;Mapping XML files describe font character maps and metrics for
Rosegarden&amp;rsquo;s use.&lt;/li&gt;
&lt;li&gt;Custom fonts can be pixmap-based or scalable system fonts.&lt;/li&gt;
&lt;li&gt;Mapping files include elements like font information, origin,
copyright, type, and more.&lt;/li&gt;
&lt;li&gt;Custom fonts can be antialiased (smooth) if specified.&lt;/li&gt;
&lt;li&gt;Scalable fonts can have autocrop attributes to adjust spacing.&lt;/li&gt;
&lt;li&gt;Font requirements are used for scalable fonts and allow font
composition from multiple system fonts.&lt;/li&gt;
&lt;li&gt;Font-sizes element specifies available notation font sizes and their
relationships to non-font elements.&lt;/li&gt;
&lt;li&gt;Font-scale and font-size elements define font proportions and sizes.&lt;/li&gt;
&lt;li&gt;Font-symbol-map lists symbols in the notation font and their sources,
including pixmap files or system font code points.&lt;/li&gt;
&lt;li&gt;Various attributes like name, src, code, glyph, and more are used to
describe symbols.&lt;/li&gt;
&lt;li&gt;Customization allows users to tailor notation fonts to their
preferences.&lt;/li&gt;
&lt;li&gt;Mapping XML files are typically stored in the fonts/mappings
subdirectory of the Rosegarden installation directory.&lt;/li&gt;
&lt;li&gt;Users can edit provided mapping files or create their own to customize
fonts effectively.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;u&gt;Creating new notation styles&lt;/u&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Rosegarden&amp;rsquo;s notation editor can display and edit notes in various
standard styles.&lt;/li&gt;
&lt;li&gt;Notation styles are defined in XML style definition files.&lt;/li&gt;
&lt;li&gt;Users can create new notation styles by writing simple XML files.&lt;/li&gt;
&lt;li&gt;Rosegarden determines which styles to offer based on installed style
files.&lt;/li&gt;
&lt;li&gt;Default style examples can be found in the styles subdirectory of the
Rosegarden installation directory.&lt;/li&gt;
&lt;li&gt;The XML format for notation styles includes elements like
&amp;ldquo;rosegarden-note-style,&amp;rdquo; &amp;ldquo;global,&amp;rdquo; and &amp;ldquo;note.&amp;rdquo;&lt;/li&gt;
&lt;li&gt;Attributes within these elements define parameters for note styles,
such as note type, shape, font character name, filled head, stem
presence, flags, slashes, and more.&lt;/li&gt;
&lt;li&gt;Users can base new styles on existing ones by specifying a
&amp;ldquo;base-style.&amp;rdquo;&lt;/li&gt;
&lt;li&gt;Feedback on creating new styles is welcomed on the Rosegarden
mailing-lists.&lt;/li&gt;
&lt;li&gt;The file name, not the &amp;ldquo;rosegarden-note-style&amp;rdquo; element, currently
defines the style name, but this may change in the future.&lt;/li&gt;
&lt;li&gt;The XML format is designed to describe standard styles that come with
Rosegarden and may not support extensive customization.&lt;/li&gt;
&lt;li&gt;Users can define note head shapes and fonts for different note styles.&lt;/li&gt;
&lt;li&gt;Styles can specify the presence of stems, flags, slashes, and their
positions relative to note heads.&lt;/li&gt;
&lt;li&gt;Rosegarden&amp;rsquo;s notation editor provides flexibility in creating and
customizing notation styles.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;13-credits-and-license&#34; class=&#34;anchor-header&#34;&gt;13. Credits and License &lt;a class=&#34;anchor-link&#34; href=&#34;#13-credits-and-license&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Rosegarden is Copyright 2000-2008 Guillaume Laurent, Chris Cannam and
Richard Bown …&lt;/p&gt;
&lt;h2 id=&#34;14-rosegarden-revision-history&#34; class=&#34;anchor-header&#34;&gt;14. Rosegarden Revision History &lt;a class=&#34;anchor-link&#34; href=&#34;#14-rosegarden-revision-history&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Last revision seems to be May 2008&lt;/p&gt;
&lt;h1 id=&#34;zz&#34; class=&#34;anchor-header&#34;&gt;zz &lt;a class=&#34;anchor-link&#34; href=&#34;#zz&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;NOTE4: we can use rg for input (-&amp;gt; emacs lilypond ) and playback
(better than qtractor|lmms ?) NOTE3: why we should not use rg for
notation&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;it is very awkward&lt;/li&gt;
&lt;li&gt;it does not produce highest quality lilypond&lt;/li&gt;
&lt;li&gt;we aren&amp;rsquo;t using quantization anyway (which doesn&amp;rsquo;t work too well
either)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;NOTE2: the export was not the problem - the template time signature was!
NOTE1: after considerable experimentation, it seems the ly export is not
of high quality and is filled with errors. therefore we need to consider
alternative system. additionally there are continuous crashes when using
timidity (though it was good with yoshimi).&lt;/p&gt;
&lt;p&gt;slurs do not sync with lyrics automatically, so use . to make lyric go
for more than a single note.&lt;/p&gt;
&lt;p&gt;MIDI/audio sequencer and notation editor (not exactly a daw) (far better
playback control than frescobaldi!)&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://wiki.archlinux.org/title/Rosegarden&#34;&gt;https://wiki.archlinux.org/title/Rosegarden&lt;/a&gt;
&lt;a href=&#34;https://www.rosegardenmusic.com/doc/en/index.html&#34;&gt;handbook&lt;/a&gt; make sure
fluidsynth has been setup or rebooting is necessary for rosegarden to
see there is a midi&lt;/p&gt;
&lt;p&gt;rethink the usage of rg because in the past we just wanted it as a
pre-lilypond interface however, since it can do much more a proper
examination is required plan&lt;/p&gt;
&lt;p&gt;dakloos midi imported using default yoshimi arpeggio sounds really neat!&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Lilypond</title>
      <link>http://towardsfreedom.com/ithngys/services/website-design-hosting/tfold/tfzen/iknotes/computing/lilypond/</link>
      <pubDate>Sun, 19 May 2024 23:57:00 -0700</pubDate>
      <guid>http://towardsfreedom.com/ithngys/services/website-design-hosting/tfold/tfzen/iknotes/computing/lilypond/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://lilypond.org&#34;&gt;LilyPond&lt;/a&gt; is a free program that lets you create
beautiful sheet music for all kinds of music, from classical to modern,
just like for piano or guitar.&lt;/p&gt;
&lt;p&gt;The coding commands will have emacs shortcuts attached to them as these
are produced.&lt;/p&gt;
&lt;h1 id=&#34;fundamental-concepts&#34; class=&#34;anchor-header&#34;&gt;fundamental concepts &lt;a class=&#34;anchor-link&#34; href=&#34;#fundamental-concepts&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id=&#34;file-structure&#34; class=&#34;anchor-header&#34;&gt;file structure &lt;a class=&#34;anchor-link&#34; href=&#34;#file-structure&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;.1&lt;/p&gt;
&lt;p&gt;for instance,&lt;/p&gt;
&lt;p&gt;Every block is a separate chunk of music within a block. multiple scores
-&amp;gt; still one output file&lt;/p&gt;
&lt;p&gt;Every block affects the or block in which it appears multiple books -&amp;gt;
separate output file&lt;/p&gt;
&lt;h2 id=&#34;note-structure&#34; class=&#34;anchor-header&#34;&gt;note structure &lt;a class=&#34;anchor-link&#34; href=&#34;#note-structure&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;pitch duration post-event(s)&lt;/p&gt;
&lt;h2 id=&#34;brackets-and-ties&#34; class=&#34;anchor-header&#34;&gt;brackets and ties &lt;a class=&#34;anchor-link&#34; href=&#34;#brackets-and-ties&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;{ … } Encloses a sequential segment of music &amp;lt; … &amp;gt; Encloses the notes
of a chord &amp;lt;&amp;lt; … &amp;gt;&amp;gt; Encloses simultaneous music expressions eg voices
( … ) Marks the start and end of a slur $&lt;code&gt;…&lt;/code&gt;$ Marks the start and end
of a phrasing slur [ … ] Marks the start and end of a manual beam&lt;/p&gt;
&lt;p&gt;x/y { … }&lt;/p&gt;
&lt;h2 id=&#34;voices&#34; class=&#34;anchor-header&#34;&gt;voices &lt;a class=&#34;anchor-link&#34; href=&#34;#voices&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;or&lt;/p&gt;
&lt;p&gt;&amp;lt;&amp;lt; d&lt;br&gt;
&amp;gt;&amp;gt;&lt;/p&gt;
&lt;p&gt;or&lt;/p&gt;
&lt;p&gt;Staff &amp;lt;&amp;lt; Voice = &amp;ldquo;1&amp;rdquo; { } Voice = &amp;ldquo;2&amp;rdquo; { } &amp;gt;&amp;gt;&lt;/p&gt;
&lt;h1 id=&#34;musescore-transfer&#34; class=&#34;anchor-header&#34;&gt;musescore transfer &lt;a class=&#34;anchor-link&#34; href=&#34;#musescore-transfer&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;musescore -&amp;gt; xml musescore $f -o ${f%.*}.musicxml&lt;/p&gt;
&lt;p&gt;xml -&amp;gt; ly musicxml2ly –nrp –npb –npm –npl –nsd –nb -m -r -l english $f&lt;/p&gt;
&lt;h1 id=&#34;automatic-scaling-to-paper-size&#34; class=&#34;anchor-header&#34;&gt;automatic scaling to paper size &lt;a class=&#34;anchor-link&#34; href=&#34;#automatic-scaling-to-paper-size&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;#(set-default-paper-size &amp;ldquo;letter&amp;rdquo;) at top level will automatically
scale and it is not necessary to do it with then diddle in here (as
originally done): Score.NonMusicalPaperColumn.padding = #1.3&lt;/p&gt;
&lt;h1 id=&#34;emacs&#34; class=&#34;anchor-header&#34;&gt;emacs &lt;a class=&#34;anchor-link&#34; href=&#34;#emacs&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id=&#34;textedit&#34; class=&#34;anchor-header&#34;&gt;&lt;a href=&#34;https://bbs.archlinux.org/viewtopic.php?id=278992&#34;&gt;textedit&lt;/a&gt; &lt;a class=&#34;anchor-link&#34; href=&#34;#textedit&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;follow instructions for gnome3 in &lt;a href=&#34;https://lilypond.org/doc/v2.21/Documentation/usage/configuring-the-system-for-point-and-click&#34;&gt;4.1.1 Configuring the
system&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;lilypond-invoke-editor.desktop already in /usr/share/applications
[Desktop Entry] Version=1.0 Name=lilypond-invoke-editor
GenericName=Textedit URI handler Comment=URI handler for textedit:
Exec=lilypond-invoke-editor %u Terminal=false Type=Application
MimeType=x-scheme-handler/textedit; Categories=Editor NoDisplay=true&lt;/p&gt;
&lt;p&gt;then execute: xdg-desktop-menu install
/usr/share/applications/lilypond-invoke-editor.desktop xdg-mime default
lilypond-invoke-editor.desktop x-scheme-handler/textedit&lt;/p&gt;
&lt;p&gt;put in .zshenv: export LYEDITOR=emacsclient the scm/editor.scm already
has emacsclient in it so no special config necessary&lt;/p&gt;
&lt;h1 id=&#34;scheme&#34; class=&#34;anchor-header&#34;&gt;scheme &lt;a class=&#34;anchor-link&#34; href=&#34;#scheme&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;ol&gt;
&lt;li&gt;Scheme tutorial&lt;br&gt;
1.1 Introduction to Scheme&lt;br&gt;
1.1.1 Scheme sandbox&lt;br&gt;
1.1.2 Scheme variables&lt;br&gt;
1.1.3 Scheme simple data types&lt;br&gt;
1.1.4 Scheme compound data types&lt;br&gt;
1.1.5 Calculations in Scheme&lt;br&gt;
1.1.6 Scheme procedures&lt;br&gt;
1.1.7 Scheme conditionals&lt;br&gt;
1.2 Scheme in LilyPond&lt;br&gt;
1.2.1 LilyPond Scheme syntax&lt;br&gt;
1.2.2 LilyPond variables&lt;br&gt;
1.2.3 Debugging Scheme code&lt;br&gt;
1.2.4 Input variables and Scheme&lt;br&gt;
1.2.5 Importing Scheme in LilyPond&lt;br&gt;
1.2.6 Object properties&lt;br&gt;
1.2.7 LilyPond compound variables&lt;br&gt;
1.2.8 Internal music representation&lt;br&gt;
1.3 Building complicated functions&lt;br&gt;
1.3.1 Displaying music expressions&lt;br&gt;
1.3.2 Music properties&lt;br&gt;
1.3.3 Doubling a note with slurs (example)&lt;br&gt;
1.3.4 Adding articulation to notes (example)&lt;/li&gt;
&lt;li&gt;Interfaces for programmers&lt;br&gt;
2.1 LilyPond code blocks&lt;br&gt;
2.2 Scheme functions&lt;br&gt;
2.2.1 Scheme function definitions&lt;br&gt;
2.2.2 Scheme function usage&lt;br&gt;
2.2.3 Void scheme functions&lt;br&gt;
2.3 Music functions&lt;br&gt;
2.3.1 Music function definitions&lt;br&gt;
2.3.2 Music function usage&lt;br&gt;
2.3.3 Simple substitution functions&lt;br&gt;
2.3.4 Intermediate substitution functions&lt;br&gt;
2.3.5 Mathematics in functions&lt;br&gt;
2.3.6 Functions without arguments&lt;br&gt;
2.3.7 Void music functions&lt;br&gt;
2.4 Event functions&lt;br&gt;
2.5 Markup functions&lt;br&gt;
2.5.1 Markup construction in Scheme&lt;br&gt;
2.5.2 How markups work internally&lt;br&gt;
2.5.3 New markup command definition&lt;br&gt;
2.5.4 New markup list command definition&lt;br&gt;
2.6 Contexts for programmers&lt;br&gt;
2.6.1 Context evaluation&lt;br&gt;
2.6.2 Running a function on all layout objects&lt;br&gt;
2.7 Callback functions&lt;br&gt;
2.8 Unpure-pure containers&lt;br&gt;
2.9 Difficult tweaks&lt;/li&gt;
&lt;/ol&gt;</description>
    </item>
    
    <item>
      <title>Netricks</title>
      <link>http://towardsfreedom.com/ithngys/services/website-design-hosting/tfold/tfzen/iknotes/computing/netricks/</link>
      <pubDate>Sat, 05 Aug 2023 11:53:00 -0700</pubDate>
      <guid>http://towardsfreedom.com/ithngys/services/website-design-hosting/tfold/tfzen/iknotes/computing/netricks/</guid>
      <description>&lt;p&gt;Here are some useful things that can enhance your net efforts with
websites, email, aibots, and more!&lt;/p&gt;
&lt;h1 id=&#34;mailto&#34; class=&#34;anchor-header&#34;&gt;mailto &lt;a class=&#34;anchor-link&#34; href=&#34;#mailto&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;The mailto directive can greatly facilitate the emailing process and is
usually used on contact forms on a webpage. The technique can also be
used in actual emails that html formatted.&lt;/p&gt;
&lt;p&gt;The mailto is quite simple to setup using basic html:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;a&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;href&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;mailto:username@domain-name.top-level-domain&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;username might be something like &lt;strong&gt;prad.e.ception&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;domain-name might be &lt;strong&gt;githubris&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;top-level-domain could be items like &lt;strong&gt;com&lt;/strong&gt;, &lt;strong&gt;org&lt;/strong&gt;, &lt;strong&gt;info&lt;/strong&gt;, etc&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Below we provide several examples demonstrating various situations
involving mailto.&lt;/p&gt;
&lt;h2 id=&#34;no-mailto&#34; class=&#34;anchor-header&#34;&gt;No mailto &lt;a class=&#34;anchor-link&#34; href=&#34;#no-mailto&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Let&amp;rsquo;s start with what most people do because they do not know any html
whatsoever. They will put something like this in an email or webpage:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Hey! Email me here: &lt;a href=&#34;mailto:prad.e.ceptor@githubris.info&#34;&gt;prad.e.ceptor@githubris.info&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Well that&amp;rsquo;s fine, but if you want to email prad, you have to copy and
paste that email address into your email client (eg gmail, outlook,
evolution, mutt, notmuch or whatever you use). Such an effort could be
too much for some and poor prad would never hear from them!&lt;/p&gt;
&lt;h2 id=&#34;simplest-mailto&#34; class=&#34;anchor-header&#34;&gt;Simplest mailto &lt;a class=&#34;anchor-link&#34; href=&#34;#simplest-mailto&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;So to make things more efficient we can enclose the email inside a
mailto code like this:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Hey! Email me &lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;a&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;href&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;mailto:prad.e.ceptor@githubris.info&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;here&lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;a&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;!!
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The above code produces the following clickable link:&lt;br&gt;
Hey! Email me 





    
    &lt;img src=&#34;prad.e.ceptor@githubris.info&#34; alt=&#34;prad.e.ceptor@githubris.info&#34;&gt;

!!&lt;/p&gt;
&lt;p&gt;You can just click on the &lt;strong&gt;here&lt;/strong&gt; link and the email will be produced
by your email client all set to go! Give it a try, but don&amp;rsquo;t send it
because that email address isn&amp;rsquo;t a real one.&lt;/p&gt;
&lt;h2 id=&#34;throw-in-a-subject&#34; class=&#34;anchor-header&#34;&gt;Throw in a subject &lt;a class=&#34;anchor-link&#34; href=&#34;#throw-in-a-subject&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Suppose you want people to contact you for a specific reason. Rather
than having them fill in the subject field of the email, you can do it
for them, like this:&lt;br&gt;
#+begin_src&lt;/sub&gt; html Hey! Email me &amp;lt;a
href=&amp;quot;&lt;a href=&#34;mailto:prad.e.ceptor@githubris.info?subject=Tell&#34;&gt;mailto:prad.e.ceptor@githubris.info?subject=Tell&lt;/a&gt;
me about physics&amp;quot;&amp;gt;here&amp;lt;/a&amp;gt; about physics!!&lt;/p&gt;
&lt;p&gt;You will get the following clickable link:&lt;br&gt;
Hey! Email me
[here](mailto:prad.e.ceptor@githubris.info?subject=Tell me about physics!)
about physics!&lt;/p&gt;
&lt;p&gt;Ya the &lt;strong&gt;here&lt;/strong&gt; link looks the same, but it isn&amp;rsquo;t! Try it and see what
happens!&lt;/p&gt;
&lt;h2 id=&#34;email-more-than-one-recipient&#34; class=&#34;anchor-header&#34;&gt;Email more than one recipient &lt;a class=&#34;anchor-link&#34; href=&#34;#email-more-than-one-recipient&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Let&amp;rsquo;s send that email to not just prad, but also copy (cc:) it to
&lt;a href=&#34;mailto:brad@copycater.com&#34;&gt;brad@copycater.com&lt;/a&gt;, and blind copy (bcc:) it to
&lt;a href=&#34;mailto:clad@cheapoutfittings.org&#34;&gt;clad@cheapoutfittings.org&lt;/a&gt; (understand that none of the emails exist, so
if you are a spammer, you&amp;rsquo;ll be disappointed!):&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Hey! Email us all &lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;a&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;href&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;mailto:prad.e.ceptor@githubris.info?subject=Tell me about physics!&amp;amp;cc=brad@copycater.com&amp;amp;bcc=clad@cheapoutfittings.org&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;here&lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;a&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;, ok!!
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;You get to click the same looking &lt;strong&gt;here&lt;/strong&gt; link, but it&amp;rsquo;s not the
same:&lt;br&gt;
Hey! Email us all
[here](mailto:prad.e.ceptor@githubris.info?subject=Tell me about &lt;a href=&#34;mailto:physics!&amp;amp;cc=brad@copycater.com&#34;&gt;physics!&amp;amp;cc=brad@copycater.com&lt;/a&gt;&amp;amp;bcc=clad@cheapoutfittings.org),
ok!!&lt;/p&gt;
&lt;p&gt;You can keep adding to the cc: (or bcc:) fields by separating them with
the rather cryptic %2C%20 (where %2C is really a comma, and %20 is
really a space). A simple comma may work, but this sort of stuff can get
messy!&lt;/p&gt;
&lt;p&gt;It doesn&amp;rsquo;t have to though, because you can use &lt;strong&gt;mailto creating tools&lt;/strong&gt;
such as this &lt;a href=&#34;https://mailtolinkgenerator.com&#34;&gt;mailto-link-generator&lt;/a&gt;
which will make the job easy!&lt;/p&gt;
&lt;h2 id=&#34;a-real-opportunity&#34; class=&#34;anchor-header&#34;&gt;A real opportunity! &lt;a class=&#34;anchor-link&#34; href=&#34;#a-real-opportunity&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Let&amp;rsquo;s use the mailto-link-generator for a worthy cause!&lt;/p&gt;
&lt;p&gt;The dynamic group &lt;a href=&#34;https://animaljustice.ca&#34;&gt;Animal Justice&lt;/a&gt; is working
to hold companies that sell eggs from caged hens accountable for such
cruelty! One of these companies, The Second Cup, had promised to go
cage-free, but is apparently reneging on that commitment.&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s use the mailto-link-generator and send an email to The Second Cup
departments, specifically:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;General Consumer Inquiries - &lt;a href=&#34;mailto:rewards@secondcup.com&#34;&gt;rewards@secondcup.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Marketing - &lt;a href=&#34;mailto:marketing@secondcup.com&#34;&gt;marketing@secondcup.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Franchising - &lt;a href=&#34;mailto:franchising@secondcup.com&#34;&gt;franchising@secondcup.com&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The subject will be&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Go Cage Free!!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The message (you can indeed include the body text!) will be somewhat
terse for there is no reason to be excessively nice to exploitative
oppressors:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;What happened to your promise to animal welfare! Your website stated
that you were ensuring your products would be made with 100% cage-free
eggs.&lt;/p&gt;
&lt;p&gt;Now, that sentence has been deleted from the website!&lt;/p&gt;
&lt;p&gt;It is still stated on your website that The Second Cup is committed to
animal welfare and to ensuring that your suppliers&amp;rsquo; policies and
practices align with your values.&lt;/p&gt;
&lt;p&gt;So which is it? Are you going cage-free or not?!&lt;/p&gt;
&lt;p&gt;As a consumer, I want to know whether I will spend my money at a
seller who keeps promises, or relegate to the cellar, one who breaks
them!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Are you ready?&lt;/p&gt;
&lt;p&gt;Go to the &lt;a href=&#34;https://mailtolinkgenerator.com&#34;&gt;mailto-link-generator&lt;/a&gt; and
&lt;strong&gt;start filling&lt;/strong&gt; in the fields:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;To field: &lt;a href=&#34;mailto:rewards@secondcup.com&#34;&gt;rewards@secondcup.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Cc field: &lt;a href=&#34;mailto:marketing@secondcup.com&#34;&gt;marketing@secondcup.com&lt;/a&gt;, &lt;a href=&#34;mailto:franchising@secondcup.com&#34;&gt;franchising@secondcup.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Subject field: Go Cage Free!!&lt;/li&gt;
&lt;li&gt;Message field: copy and paste the above message or type up your own.
(Sign it with your name.)&lt;/li&gt;
&lt;li&gt;Link text field: Email The Second Cup&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Then &lt;strong&gt;press the Generate button&lt;/strong&gt; and you&amp;rsquo;ll see your mailto link and
even the entire html code which you can insert into an html email
message or a webpage respectively. You can click on the Copy buttons to
grab the code and use it like this:&lt;/p&gt;
&lt;p&gt;[Email The Second
Cup](mailto:rewards@secondcup.com?cc=marketing@secondcup.com, &lt;a href=&#34;mailto:franchising@secondcup.com&#34;&gt;franchising@secondcup.com&lt;/a&gt;&amp;amp;subject=Go%20Cage%20Free!!&amp;amp;body=What%20happened%20to%20your%20commitment%20to%20animal%20welfare!%20Your%20website%20stated%20that%20you%20were%20ensuring%20your%20products%20would%20be%20made%20with%20100%25%20cage-free%20eggs.%0A%0ANow%2C%20that%20sentence%20has%20been%20deleted%20from%20the%20website!%0A%0AIt%20is%20still%20stated%20on%20your%20website%20that%20Second%20Cup%20is%20committed%20to%20animal%20welfare%20and%20to%20ensuring%20that%20your%20suppliers&amp;rsquo;%20policies%20and%20practices%20align%20with%20your%20values.%0A%0ASo%20which%20is%20it%3F%20Are%20you%20going%20cage-free%20or%20not%3F!%0A%0AAs%20a%20consumer%2C%20I%20want%20to%20know%20whether%20I%20will%20spend%20my%20money%20at%20a%20seller%20who%20keeps%20promises%20or%20should%20be%20relegated%20to%20the%20cellar%20for%20breaking%20them!)&lt;/p&gt;
&lt;p&gt;Click on the above link and see what your email client prepares for you!
Then send it to The Second Cup, so they have no doubt that we are
watching them!&lt;/p&gt;
&lt;h2 id=&#34;want-to-know-more&#34; class=&#34;anchor-header&#34;&gt;Want to know more? &lt;a class=&#34;anchor-link&#34; href=&#34;#want-to-know-more&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;You now have enough mailto knowledge to be dangerous!&lt;/p&gt;
&lt;p&gt;If you want to go further into this, try these links:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://mailtrap.io/blog/mailto-links-explained/&#34;&gt;Mailto HTML Links
Explained&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.w3docs.com/snippets/html/how-to-create-mailto-links.html&#34;&gt;How to Create Mailto
Links&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Or if you are a I-don&amp;rsquo;t-read-the-book-so-show-me-the-movie type, watch
away:&lt;/p&gt;
&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;
      &lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/XGmPSB2TscY?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;
    &lt;/div&gt;</description>
    </item>
    
    <item>
      <title>Imagemagick</title>
      <link>http://towardsfreedom.com/ithngys/services/website-design-hosting/tfold/tfzen/iknotes/computing/imagemagick/</link>
      <pubDate>Tue, 21 Jun 2022 20:07:52 -0700</pubDate>
      <guid>http://towardsfreedom.com/ithngys/services/website-design-hosting/tfold/tfzen/iknotes/computing/imagemagick/</guid>
      <description>&lt;p&gt;Since we are going text/prg based for most things, we may consider
imagemagick as a fairly regular replacement for gimp. This effort will
also lead to understanding graphic software terminology.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://imagemagick.org&#34;&gt;Imagemagick website&lt;/a&gt; and &lt;a href=&#34;https://imagemagick.org/Usage/&#34;&gt;Examples of
ImageMagick Usage&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Waiting items below will be elaborated on and some eliminated.&lt;/p&gt;
&lt;h1 id=&#34;quick-fixes&#34; class=&#34;anchor-header&#34;&gt;Quick Fixes &lt;a class=&#34;anchor-link&#34; href=&#34;#quick-fixes&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id=&#34;stitching-gifs-together&#34; class=&#34;anchor-header&#34;&gt;stitching gifs together &lt;a class=&#34;anchor-link&#34; href=&#34;#stitching-gifs-together&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;as explained
&lt;a href=&#34;https://stackoverflow.com/questions/30927367/imagemagick-making-2-gifs-into-side-by-side-gifs-using-im-convert&#34;&gt;here&lt;/a&gt;,
the idea is to separate frames, join them, put it all back together:
convert 1.gif -coalesce a-%04d.gif convert 2.gif -coalesce b-%04d.gif&lt;/p&gt;
&lt;p&gt;for f in a-*.gif; do convert $f ${f/a/b} +append $f; done # append
frames&lt;/p&gt;
&lt;p&gt;convert -loop 0 -delay 20 a-*.gif result.gif # rejoin frames&lt;/p&gt;
&lt;h2 id=&#34;montage&#34; class=&#34;anchor-header&#34;&gt;montage &lt;a class=&#34;anchor-link&#34; href=&#34;#montage&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;in a dir with jpg,png this is the sort of thing that can be done: magick
montage -geometry 99x55&amp;gt;+2+2 -tile 4x1 *.{jpg,png} 00.jpg&lt;/p&gt;
&lt;h2 id=&#34;crop&#34; class=&#34;anchor-header&#34;&gt;crop &lt;a class=&#34;anchor-link&#34; href=&#34;#crop&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;magick amazon-homepage.png -crop 2560x1440+1920+0 tmp.png&lt;/p&gt;
&lt;p&gt;can use magick display to determine parameters though it is a bit
awkward&lt;/p&gt;
&lt;h2 id=&#34;make-png-transparent&#34; class=&#34;anchor-header&#34;&gt;make png transparent &lt;a class=&#34;anchor-link&#34; href=&#34;#make-png-transparent&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;convert test.png -transparent white trans.png&lt;/p&gt;
&lt;h1 id=&#34;features-and-capabilities&#34; class=&#34;anchor-header&#34;&gt;Features and Capabilities &lt;a class=&#34;anchor-link&#34; href=&#34;#features-and-capabilities&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id=&#34;command-line-processing-utilize-imagemagick-from-the-command-line&#34; class=&#34;anchor-header&#34;&gt;Command-line processing: utilize ImageMagick from the command-line. &lt;a class=&#34;anchor-link&#34; href=&#34;#command-line-processing-utilize-imagemagick-from-the-command-line&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;ImageMagick command-line consists of&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;one or more required input filenames:
&lt;ul&gt;
&lt;li&gt;filename globbing magick *.jpg images.gif&lt;/li&gt;
&lt;li&gt;explicit image format magick -size 640x480 -depth 8 rgb:image
image.png&lt;/li&gt;
&lt;li&gt;using built-in images and patterns magick -size 640x480
pattern:checkerboard checkerboard.png&lt;/li&gt;
&lt;li&gt;STDIN, STDOUT, and file descriptors not sure what is going on??&lt;/li&gt;
&lt;li&gt;selecting certain frames from an image magick &amp;lsquo;images.gif[0]&amp;rsquo;
image.png magick &amp;lsquo;images.gif[0-3]&amp;rsquo; images.mng&lt;/li&gt;
&lt;li&gt;selecting a region of an image magick -size 6000x4000 -depth 8
&amp;lsquo;rgb:image[600x400+1900+2900]&amp;rsquo; image.jpg&lt;/li&gt;
&lt;li&gt;forcing an inline image resize magick &amp;lsquo;*.jpg&amp;rsquo; -resize 120x120
thumbnail%03d.png but better magick &amp;lsquo;*.jpg[120x120]&amp;rsquo;
thumbnail%03d.png&lt;/li&gt;
&lt;li&gt;forcing an inline image crop magick &amp;lsquo;*.jpg&amp;rsquo; -crop 120x120+10+5
thumbnail%03d.png&lt;/li&gt;
&lt;li&gt;filename references magick @myimages.txt mymovie.gif magick
image-%d.jpg[1-5]&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;zero, one, or more image settings.&lt;/li&gt;
&lt;li&gt;zero, one, or more image operators.&lt;/li&gt;
&lt;li&gt;zero, one, or more image sequence operators.&lt;/li&gt;
&lt;li&gt;zero, one, or more image stacks.&lt;/li&gt;
&lt;li&gt;zero or one output image filenames&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&#34;resizing-an-image&#34; class=&#34;anchor-header&#34;&gt;Resizing an image &lt;a class=&#34;anchor-link&#34; href=&#34;#resizing-an-image&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;magick tmp.jpg -resample 10% -sharpen 0x2 -background none -flatten
00.jpg&lt;/p&gt;
&lt;p&gt;Without the last 3 parameters the corners came out black instead of
transparent.&lt;/p&gt;
&lt;h1 id=&#34;change-black---white&#34; class=&#34;anchor-header&#34;&gt;Change black &amp;lt;-&amp;gt; white &lt;a class=&#34;anchor-link&#34; href=&#34;#change-black---white&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;magick input.png -channel RGB -negate output.png complements every
color.&lt;/p&gt;
&lt;p&gt;To just to the blacks and whites PP says use:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;magick input.png \
  \( -clone 0 -colorspace HSL -channel Lightness -separate +channel -negate \) \
  \( -clone 0 -fill white -colorize 100 \) \
  -compose Luminize -composite \
  output.png
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This command does the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Creates a copy of the input image and extracts its lightness channel.&lt;/li&gt;
&lt;li&gt;Negates the lightness channel, which inverts black and white.&lt;/li&gt;
&lt;li&gt;Creates another copy of the input image and turns it completely white.&lt;/li&gt;
&lt;li&gt;Combines the negated lightness with the white image using the Luminize
composition method.&lt;/li&gt;
&lt;li&gt;This approach will invert black and white while preserving other
colors14. It works by manipulating the lightness channel in the HSL
colorspace, which affects only the brightness of the pixels without
changing their hue or saturation6.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For even more control:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;magick input.png \
  \( -clone 0 -colorspace HSL -channel Lightness -separate +channel -threshold 5%,95% -negate \) \
  \( -clone 0 -fill white -colorize 100 \) \
  -compose Luminize -composite \
  output.png
&lt;/code&gt;&lt;/pre&gt;
&lt;h1 id=&#34;waiting&#34; class=&#34;anchor-header&#34;&gt;Waiting &lt;a class=&#34;anchor-link&#34; href=&#34;#waiting&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id=&#34;animation-create-a-gif-animation-sequence-from-a-group-of-images&#34; class=&#34;anchor-header&#34;&gt;Animation: create a GIF animation sequence from a group of images. &lt;a class=&#34;anchor-link&#34; href=&#34;#animation-create-a-gif-animation-sequence-from-a-group-of-images&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;h2 id=&#34;bilateral-blur-non-linear-edge-preserving-and-noise-reducing-smoothing-filter&#34; class=&#34;anchor-header&#34;&gt;Bilateral blur: non-linear, edge-preserving, and noise-reducing smoothing filter. &lt;a class=&#34;anchor-link&#34; href=&#34;#bilateral-blur-non-linear-edge-preserving-and-noise-reducing-smoothing-filter&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;h2 id=&#34;color-management-accurate-color-management-with-color-profiles-or-in-lieu-of-built-in-gamma-compression-or-expansion-as-demanded-by-the-colorspace&#34; class=&#34;anchor-header&#34;&gt;Color management: accurate color management with color profiles or in lieu of– built-in gamma compression or expansion as demanded by the colorspace. &lt;a class=&#34;anchor-link&#34; href=&#34;#color-management-accurate-color-management-with-color-profiles-or-in-lieu-of-built-in-gamma-compression-or-expansion-as-demanded-by-the-colorspace&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;h2 id=&#34;color-thresholding-force-all-pixels-in-the-color-range-to-white-otherwise-black&#34; class=&#34;anchor-header&#34;&gt;Color thresholding: force all pixels in the color range to white otherwise black. &lt;a class=&#34;anchor-link&#34; href=&#34;#color-thresholding-force-all-pixels-in-the-color-range-to-white-otherwise-black&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;h2 id=&#34;complex-text-layout-bidirectional-text-support-and-shaping&#34; class=&#34;anchor-header&#34;&gt;Complex text layout: bidirectional text support and shaping. &lt;a class=&#34;anchor-link&#34; href=&#34;#complex-text-layout-bidirectional-text-support-and-shaping&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;h2 id=&#34;composite-overlap-one-image-over-another&#34; class=&#34;anchor-header&#34;&gt;Composite: overlap one image over another. &lt;a class=&#34;anchor-link&#34; href=&#34;#composite-overlap-one-image-over-another&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;h2 id=&#34;connected-component-labeling-uniquely-label-connected-regions-in-an-image&#34; class=&#34;anchor-header&#34;&gt;Connected component labeling: uniquely label connected regions in an image. &lt;a class=&#34;anchor-link&#34; href=&#34;#connected-component-labeling-uniquely-label-connected-regions-in-an-image&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;h2 id=&#34;convex-hull-smallest-area-convex-polygon-containing-the-image-foreground-objects-in-addition-the-minimum-bounding-box-and-unrotate-angle-are-also-generated&#34; class=&#34;anchor-header&#34;&gt;Convex hull: smallest area convex polygon containing the image foreground objects. In addition, the minimum bounding box and unrotate angle are also generated. &lt;a class=&#34;anchor-link&#34; href=&#34;#convex-hull-smallest-area-convex-polygon-containing-the-image-foreground-objects-in-addition-the-minimum-bounding-box-and-unrotate-angle-are-also-generated&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;h2 id=&#34;decorate-add-a-border-or-frame-to-an-image&#34; class=&#34;anchor-header&#34;&gt;Decorate: add a border or frame to an image. &lt;a class=&#34;anchor-link&#34; href=&#34;#decorate-add-a-border-or-frame-to-an-image&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;h2 id=&#34;delineate-image-features-canny-edge-detection-hough-lines&#34; class=&#34;anchor-header&#34;&gt;Delineate image features: Canny edge detection, Hough lines. &lt;a class=&#34;anchor-link&#34; href=&#34;#delineate-image-features-canny-edge-detection-hough-lines&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;h2 id=&#34;discrete-fourier-transform-implements-the-forward-and-inverse-dft&#34; class=&#34;anchor-header&#34;&gt;Discrete Fourier transform: implements the forward and inverse DFT. &lt;a class=&#34;anchor-link&#34; href=&#34;#discrete-fourier-transform-implements-the-forward-and-inverse-dft&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;h2 id=&#34;distributed-pixel-cache-offload-intermediate-pixel-storage-to-one-or-more-remote-servers&#34; class=&#34;anchor-header&#34;&gt;Distributed pixel cache: offload intermediate pixel storage to one or more remote servers. &lt;a class=&#34;anchor-link&#34; href=&#34;#distributed-pixel-cache-offload-intermediate-pixel-storage-to-one-or-more-remote-servers&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;h2 id=&#34;draw-add-shapes-or-text-to-an-image&#34; class=&#34;anchor-header&#34;&gt;Draw: add shapes or text to an image. &lt;a class=&#34;anchor-link&#34; href=&#34;#draw-add-shapes-or-text-to-an-image&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;h2 id=&#34;encipher-or-decipher-an-image-convert-ordinary-images-into-unintelligible-gibberish-and-back-again&#34; class=&#34;anchor-header&#34;&gt;Encipher or decipher an image: convert ordinary images into unintelligible gibberish and back again. &lt;a class=&#34;anchor-link&#34; href=&#34;#encipher-or-decipher-an-image-convert-ordinary-images-into-unintelligible-gibberish-and-back-again&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;h2 id=&#34;format-conversion-convert-an-image-from-one-format-to-another-eg-png-to-jpeg&#34; class=&#34;anchor-header&#34;&gt;Format conversion: convert an image from one format to another (e.g. PNG to JPEG). &lt;a class=&#34;anchor-link&#34; href=&#34;#format-conversion-convert-an-image-from-one-format-to-another-eg-png-to-jpeg&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;h2 id=&#34;generalized-pixel-distortion-correct-for-or-induce-image-distortions-including-perspective&#34; class=&#34;anchor-header&#34;&gt;Generalized pixel distortion: correct for, or induce image distortions including perspective. &lt;a class=&#34;anchor-link&#34; href=&#34;#generalized-pixel-distortion-correct-for-or-induce-image-distortions-including-perspective&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;h2 id=&#34;heterogeneous-distributed-processing-certain-algorithms-are-opencl-enabled-to-take-advantage-of-speed-ups-offered-by-executing-in-concert-across-heterogeneous-platforms-consisting-of-cpus-gpus-and-other-processors&#34; class=&#34;anchor-header&#34;&gt;Heterogeneous distributed processing: certain algorithms are OpenCL-enabled to take advantage of speed-ups offered by executing in concert across heterogeneous platforms consisting of CPUs, GPUs, and other processors. &lt;a class=&#34;anchor-link&#34; href=&#34;#heterogeneous-distributed-processing-certain-algorithms-are-opencl-enabled-to-take-advantage-of-speed-ups-offered-by-executing-in-concert-across-heterogeneous-platforms-consisting-of-cpus-gpus-and-other-processors&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;h2 id=&#34;high-dynamic-range-images-accurately-represent-the-wide-range-of-intensity-levels-found-in-real-scenes-ranging-from-the-brightest-direct-sunlight-to-the-deepest-darkest-shadows&#34; class=&#34;anchor-header&#34;&gt;High dynamic-range images: accurately represent the wide range of intensity levels found in real scenes ranging from the brightest direct sunlight to the deepest darkest shadows. &lt;a class=&#34;anchor-link&#34; href=&#34;#high-dynamic-range-images-accurately-represent-the-wide-range-of-intensity-levels-found-in-real-scenes-ranging-from-the-brightest-direct-sunlight-to-the-deepest-darkest-shadows&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;h2 id=&#34;histogram-equalization-use-adaptive-histogram-equalization-to-improve-contrast-in-images&#34; class=&#34;anchor-header&#34;&gt;Histogram equalization: use adaptive histogram equalization to improve contrast in images. &lt;a class=&#34;anchor-link&#34; href=&#34;#histogram-equalization-use-adaptive-histogram-equalization-to-improve-contrast-in-images&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;h2 id=&#34;image-cache-secure-methods-and-tools-to-cache-images-image-sequences-video-audio-or-metadata-in-a-local-folder&#34; class=&#34;anchor-header&#34;&gt;Image cache: secure methods and tools to cache images, image sequences, video, audio or metadata in a local folder.. &lt;a class=&#34;anchor-link&#34; href=&#34;#image-cache-secure-methods-and-tools-to-cache-images-image-sequences-video-audio-or-metadata-in-a-local-folder&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;h2 id=&#34;image-calculator-apply-a-mathematical-expression-to-an-image-image-sequence-or-image-channels&#34; class=&#34;anchor-header&#34;&gt;Image calculator: apply a mathematical expression to an image, image sequence, or image channels. &lt;a class=&#34;anchor-link&#34; href=&#34;#image-calculator-apply-a-mathematical-expression-to-an-image-image-sequence-or-image-channels&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;h2 id=&#34;image-gradients-create-a-gradual-blend-of-two-colors-whose-shape-is-horizontal-vertical-circular-or-elliptical&#34; class=&#34;anchor-header&#34;&gt;Image gradients: create a gradual blend of two colors whose shape is horizontal, vertical, circular, or elliptical. &lt;a class=&#34;anchor-link&#34; href=&#34;#image-gradients-create-a-gradual-blend-of-two-colors-whose-shape-is-horizontal-vertical-circular-or-elliptical&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;h2 id=&#34;image-identification-describe-the-format-and-attributes-of-an-image&#34; class=&#34;anchor-header&#34;&gt;Image identification: describe the format and attributes of an image. &lt;a class=&#34;anchor-link&#34; href=&#34;#image-identification-describe-the-format-and-attributes-of-an-image&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;h2 id=&#34;imagemagick-on-the-iphone-convert-edit-or-compose-images-on-your-ios-device-such-as-the-iphone-or-ipad&#34; class=&#34;anchor-header&#34;&gt;ImageMagick on the iPhone: convert, edit, or compose images on your iOS device such as the iPhone or iPad. &lt;a class=&#34;anchor-link&#34; href=&#34;#imagemagick-on-the-iphone-convert-edit-or-compose-images-on-your-ios-device-such-as-the-iphone-or-ipad&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;h2 id=&#34;large-image-support-read-process-or-write-mega--giga--or-tera-pixel-image-sizes&#34; class=&#34;anchor-header&#34;&gt;Large image support: read, process, or write mega-, giga-, or tera-pixel image sizes. &lt;a class=&#34;anchor-link&#34; href=&#34;#large-image-support-read-process-or-write-mega--giga--or-tera-pixel-image-sizes&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;h2 id=&#34;montage-juxtapose-image-thumbnails-on-an-image-canvas&#34; class=&#34;anchor-header&#34;&gt;Montage: juxtapose image thumbnails on an image canvas. &lt;a class=&#34;anchor-link&#34; href=&#34;#montage-juxtapose-image-thumbnails-on-an-image-canvas&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;h2 id=&#34;morphology-of-shapes-extract-features-describe-shapes-and-recognize-patterns-in-images&#34; class=&#34;anchor-header&#34;&gt;Morphology of shapes: extract features, describe shapes, and recognize patterns in images. &lt;a class=&#34;anchor-link&#34; href=&#34;#morphology-of-shapes-extract-features-describe-shapes-and-recognize-patterns-in-images&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;h2 id=&#34;motion-picture-support-read-and-write-the-common-image-formats-used-in-digital-film-work&#34; class=&#34;anchor-header&#34;&gt;Motion picture support: read and write the common image formats used in digital film work. &lt;a class=&#34;anchor-link&#34; href=&#34;#motion-picture-support-read-and-write-the-common-image-formats-used-in-digital-film-work&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;h2 id=&#34;multispectral-imagery-support-multispectral-imagery-up-to-64-bands&#34; class=&#34;anchor-header&#34;&gt;Multispectral imagery: support multispectral imagery up to 64 bands. &lt;a class=&#34;anchor-link&#34; href=&#34;#multispectral-imagery-support-multispectral-imagery-up-to-64-bands&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;h2 id=&#34;noise-and-color-reduction-kuwahara-filter-mean-shift&#34; class=&#34;anchor-header&#34;&gt;Noise and color reduction: Kuwahara Filter, mean-shift. &lt;a class=&#34;anchor-link&#34; href=&#34;#noise-and-color-reduction-kuwahara-filter-mean-shift&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;h2 id=&#34;perceptual-hash-map-visually-identical-images-to-the-same-or-similar-hash-useful-in-image-retrieval-authentication-indexing-or-copy-detection-as-well-as-digital-watermarking&#34; class=&#34;anchor-header&#34;&gt;Perceptual hash: map visually identical images to the same or similar hash– useful in image retrieval, authentication, indexing, or copy detection as well as digital watermarking. &lt;a class=&#34;anchor-link&#34; href=&#34;#perceptual-hash-map-visually-identical-images-to-the-same-or-similar-hash-useful-in-image-retrieval-authentication-indexing-or-copy-detection-as-well-as-digital-watermarking&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;h2 id=&#34;special-effects-blur-sharpen-threshold-or-tint-an-image&#34; class=&#34;anchor-header&#34;&gt;Special effects: blur, sharpen, threshold, or tint an image. &lt;a class=&#34;anchor-link&#34; href=&#34;#special-effects-blur-sharpen-threshold-or-tint-an-image&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;h2 id=&#34;text--comments-insert-descriptive-or-artistic-text-in-an-image&#34; class=&#34;anchor-header&#34;&gt;Text &amp;amp; comments: insert descriptive or artistic text in an image. &lt;a class=&#34;anchor-link&#34; href=&#34;#text--comments-insert-descriptive-or-artistic-text-in-an-image&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;h2 id=&#34;threads-of-execution-support-imagemagick-is-thread-safe-and-most-internal-algorithms-execute-in-parallel-to-take-advantage-of-speed-ups-offered-by-multicore-processor-chips&#34; class=&#34;anchor-header&#34;&gt;Threads of execution support: ImageMagick is thread safe and most internal algorithms execute in parallel to take advantage of speed-ups offered by multicore processor chips. &lt;a class=&#34;anchor-link&#34; href=&#34;#threads-of-execution-support-imagemagick-is-thread-safe-and-most-internal-algorithms-execute-in-parallel-to-take-advantage-of-speed-ups-offered-by-multicore-processor-chips&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;h2 id=&#34;transform-resize-rotate-deskew-crop-flip-or-trim-an-image&#34; class=&#34;anchor-header&#34;&gt;Transform: resize, rotate, deskew, crop, flip or trim an image. &lt;a class=&#34;anchor-link&#34; href=&#34;#transform-resize-rotate-deskew-crop-flip-or-trim-an-image&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;h2 id=&#34;transparency-render-portions-of-an-image-invisible&#34; class=&#34;anchor-header&#34;&gt;Transparency: render portions of an image invisible. &lt;a class=&#34;anchor-link&#34; href=&#34;#transparency-render-portions-of-an-image-invisible&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;h2 id=&#34;virtual-pixel-support-convenient-access-to-pixels-outside-the-image-boundaries&#34; class=&#34;anchor-header&#34;&gt;Virtual pixel support: convenient access to pixels outside the image boundaries. &lt;a class=&#34;anchor-link&#34; href=&#34;#virtual-pixel-support-convenient-access-to-pixels-outside-the-image-boundaries&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;</description>
    </item>
    
    <item>
      <title>Clojure</title>
      <link>http://towardsfreedom.com/ithngys/services/website-design-hosting/tfold/tfzen/iknotes/computing/clojure/</link>
      <pubDate>Thu, 16 Jun 2022 12:54:45 -0700</pubDate>
      <guid>http://towardsfreedom.com/ithngys/services/website-design-hosting/tfold/tfzen/iknotes/computing/clojure/</guid>
      <description>&lt;p&gt;Clojure is a dynamic, general-purpose programming language, combining
the approachability and interactive development of a scripting language
with an efficient and robust infrastructure for multithreaded
programming.&lt;/p&gt;
&lt;h1 id=&#34;keybindings&#34; class=&#34;anchor-header&#34;&gt;keybindings &lt;a class=&#34;anchor-link&#34; href=&#34;#keybindings&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Most are found in &lt;a href=&#34;https://docs.cider.mx/cider/usage/cider_mode.html#key-reference&#34;&gt;cider key
ref&lt;/a&gt;
and should be figured out gradually.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;;; docs
C-h . Gives from lsp in eldoc buffer with examples (auto)
(C-u) C-c C-d C-d|w At point (prompt) docs local|web
C-c C-d C-a Apropos for function/var
C-c C-d C-f Apropos for text in documentation
C-c C-d C-e Apropos for text and select !!!
M-. Gives actual code

;; evaluate
C-c C-b Exit evaluation if stuck
C-c C-c Entire current form
C-c C-v C-l Immediate form
C-c|x C-e Previous form
C-c C-k Buffer
C-c M-; Output as comment
C-c M-e Output to REPL
(C-u) C-c C-(M-)l File(s)
C-c C-v (C-)l List
C-c C-v r Region
C-c C-v n The ns form
C-c C-v w Replace form with evaluation
C-c C-v z Preceding top form up to point !!!

;; help
C-h f cider-mode RET

;; launch
C-c M-j Do cider-jack-in-clj
C-c C-x C-x Prompt for choice of REPL

;; macros !!!
C-c C-m Macroexpand !!!

;; move
M-, Return to pre-jump location
C-M-d Down into list
C-M-u Up out of list
C-M-n Forward to next list
C-M-p Backward to prev list
C-M-h Next defun
C-M-@ Next sexp
C-M-f Forward by sexp
C-M-b Backward by sexp
C-M-a Descend into sexp

;; pprint
C-c C-v C-f e|d Pretty print last|current form to popup buffer

;; search
C-c C-d (C-)a Apropos var
C-c C-d (C-)f Apropos doc

;; switch
C-c C-z To relevant REPL
C-c M-z To relevant REPL after eval current buffer
C-c M-n M-n REPL ns to ns of current buffer

;; zzmisc
M-TAB Complete symbol at point
C-c M-d Display REPL connection info
C-c C-o Clear REPL output
C-c M-i Inspect and act on expression
(C-u) C-c C-z REPL jump
C-c M-p Insert form into REPL
C-c C-q Quit the REPL
&lt;/code&gt;&lt;/pre&gt;
&lt;h1 id=&#34;cider-manual&#34; class=&#34;anchor-header&#34;&gt;&lt;a href=&#34;https://docs.cider.mx/cider/index.html&#34;&gt;cider manual&lt;/a&gt; &lt;a class=&#34;anchor-link&#34; href=&#34;#cider-manual&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id=&#34;home&#34; class=&#34;anchor-header&#34;&gt;Home &lt;a class=&#34;anchor-link&#34; href=&#34;#home&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id=&#34;overview&#34; class=&#34;anchor-header&#34;&gt;Overview &lt;a class=&#34;anchor-link&#34; href=&#34;#overview&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Programmers are expected to program in a very dynamic and incremental
manner, constantly re-evaluating existing Clojure definitions and adding
new ones to their running applications.&lt;/p&gt;
&lt;h3 id=&#34;features&#34; class=&#34;anchor-header&#34;&gt;Features &lt;a class=&#34;anchor-link&#34; href=&#34;#features&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;We need to understand these better to make full use of CIDER.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Interactive code evaluation can do this right in the code with C-c M-;
often more useful than repl&lt;/li&gt;
&lt;li&gt;Powerful REPL&lt;/li&gt;
&lt;li&gt;Code completion&lt;/li&gt;
&lt;li&gt;Code reloading&lt;/li&gt;
&lt;li&gt;Definition &amp;amp; documentation lookup particularly excellent with C-c d d&lt;/li&gt;
&lt;li&gt;Enhanced syntax highlighting and indentation&lt;/li&gt;
&lt;li&gt;Enhanced error reporting&lt;/li&gt;
&lt;li&gt;clojure.test integration&lt;/li&gt;
&lt;li&gt;clojure.spec integration&lt;/li&gt;
&lt;li&gt;Interactive debugger&lt;/li&gt;
&lt;li&gt;Data Inspector&lt;/li&gt;
&lt;li&gt;Integration with Java logging frameworks&lt;/li&gt;
&lt;li&gt;Profiling &amp;amp; tracing&lt;/li&gt;
&lt;li&gt;ClojureScript support&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;cider-in-action&#34; class=&#34;anchor-header&#34;&gt;CIDER in Action &lt;a class=&#34;anchor-link&#34; href=&#34;#cider-in-action&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Videos are good for learning CIDER.&lt;/p&gt;
&lt;h3 id=&#34;whats-next&#34; class=&#34;anchor-header&#34;&gt;What’s Next? &lt;a class=&#34;anchor-link&#34; href=&#34;#whats-next&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Get familiar with interactive programming and cider-mode&lt;/p&gt;
&lt;h2 id=&#34;getting-started&#34; class=&#34;anchor-header&#34;&gt;Getting started &lt;a class=&#34;anchor-link&#34; href=&#34;#getting-started&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id=&#34;installation&#34; class=&#34;anchor-header&#34;&gt;Installation &lt;a class=&#34;anchor-link&#34; href=&#34;#installation&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Already done.&lt;/p&gt;
&lt;h3 id=&#34;up-and-running&#34; class=&#34;anchor-header&#34;&gt;Up and Running &lt;a class=&#34;anchor-link&#34; href=&#34;#up-and-running&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Most of this is already setup, but we should look at:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Jacking-in without a Project just clj to get the repl or can also use
in a dir M-x cider-jack-in-universal&lt;/li&gt;
&lt;li&gt;Connect to a Running nREPL Server after getting a repl running M-x
cider-connect for a port&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;nrepl-middleware-setup&#34; class=&#34;anchor-header&#34;&gt;nREPL Middleware Setup &lt;a class=&#34;anchor-link&#34; href=&#34;#nrepl-middleware-setup&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;You can skip this section if you don’t plan to use cider-connect or
don’t care about the advanced functionality that requires cider-nrepl.
However, with tools.deps we can add to ~/.clojure/deps.edn&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-clojure&#34; data-lang=&#34;clojure&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;ss&#34;&gt;:cider-clj&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;ss&#34;&gt;:extra-deps&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;cider/cider-nrepl&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;ss&#34;&gt;:mvn/version&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;0.49.0&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;ss&#34;&gt;:main-opts&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;-m&amp;#34;&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;nrepl.cmdline&amp;#34;&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;--middleware&amp;#34;&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;[cider.nrepl/cider-middleware]&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;ss&#34;&gt;:cider-cljs&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;ss&#34;&gt;:extra-deps&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;org.clojure/clojurescript&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;ss&#34;&gt;:mvn/version&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;1.10.339&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                          &lt;span class=&#34;nv&#34;&gt;cider/cider-nrepl&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;ss&#34;&gt;:mvn/version&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;0.49.0&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                          &lt;span class=&#34;nv&#34;&gt;cider/piggieback&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;ss&#34;&gt;:mvn/version&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;0.5.3&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;             &lt;span class=&#34;ss&#34;&gt;:main-opts&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;-m&amp;#34;&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;nrepl.cmdline&amp;#34;&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;--middleware&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                         &lt;span class=&#34;s&#34;&gt;&amp;#34;[cider.nrepl/cider-middleware,cider.piggieback/wrap-cljs-repl]&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;And can then run M-x cider-connect to the repl.&lt;/p&gt;
&lt;h2 id=&#34;clojurescript-setup&#34; class=&#34;anchor-header&#34;&gt;ClojureScript Setup &lt;a class=&#34;anchor-link&#34; href=&#34;#clojurescript-setup&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Overview&lt;/li&gt;
&lt;li&gt;Up and Running&lt;/li&gt;
&lt;li&gt;Configuration&lt;/li&gt;
&lt;li&gt;Using Figwheel&lt;/li&gt;
&lt;li&gt;Using shadow-cljs&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Using Other REPLs&lt;/p&gt;
&lt;h2 id=&#34;alternative-platforms&#34; class=&#34;anchor-header&#34;&gt;Alternative Platforms &lt;a class=&#34;anchor-link&#34; href=&#34;#alternative-platforms&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Overview&lt;/li&gt;
&lt;li&gt;Babashka&lt;/li&gt;
&lt;li&gt;Nbb&lt;/li&gt;
&lt;li&gt;Other Platforms&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;using-cider&#34; class=&#34;anchor-header&#34;&gt;Using CIDER &lt;a class=&#34;anchor-link&#34; href=&#34;#using-cider&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id=&#34;interactive-programming&#34; class=&#34;anchor-header&#34;&gt;Interactive Programming &lt;a class=&#34;anchor-link&#34; href=&#34;#interactive-programming&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Overview Instead of repeatedly editing, compiling, and restarting an
application, the programmer starts the application once and then adds
and updates individual Clojure definitions as the program continues to
run … some Clojure programmers have been known to keep a CIDER session
running for weeks or even months!&lt;/li&gt;
&lt;li&gt;Implementation&lt;/li&gt;
&lt;li&gt;Demos&lt;br&gt;
&lt;strong&gt;Deep Dive into CIDER&lt;/strong&gt; &lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;
      &lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/aYA4AAjLfT0?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;
    &lt;/div&gt;
&lt;br&gt;
&lt;strong&gt;Emacs &amp;amp; Clojure, A Lispy Love Affair&lt;/strong&gt; &lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;
      &lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/O6g5C4jUCUc?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;
    &lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;using-cider-mode&#34; class=&#34;anchor-header&#34;&gt;Using cider-mode &lt;a class=&#34;anchor-link&#34; href=&#34;#using-cider-mode&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;C-h f cider-mode is useful, but even better is using which-key-mode to
see all key possibilities.&lt;/p&gt;
&lt;h3 id=&#34;code-evaluation&#34; class=&#34;anchor-header&#34;&gt;Code Evaluation &lt;a class=&#34;anchor-link&#34; href=&#34;#code-evaluation&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Basic: buffer (do first)&lt;/li&gt;
&lt;li&gt;Exotic: should be accessed via CIDER’s evaluation commands keymap,
prefix C-c C-v&lt;/li&gt;
&lt;li&gt;Minibuffer: cider-read-and-eval C-c M-:&lt;/li&gt;
&lt;li&gt;Evaluation hooks: ??&lt;/li&gt;
&lt;li&gt;Synchronous vs Asynchronous: nrn&lt;/li&gt;
&lt;li&gt;Configuration: nrn&lt;/li&gt;
&lt;li&gt;Keybindings: C-M-x, C-c C-c, C-c C-v [C-]d&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;code-completion&#34; class=&#34;anchor-header&#34;&gt;Code Completion &lt;a class=&#34;anchor-link&#34; href=&#34;#code-completion&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Standard: TAB or M-TAB (setq tab-always-indent &amp;lsquo;complete)&lt;/li&gt;
&lt;li&gt;Completion styles: user may want to use a different completion style
just for the CIDER complete eg (add-to-list
&amp;lsquo;completion-category-overrides &amp;lsquo;(cider (styles basic)))&lt;/li&gt;
&lt;li&gt;Auto-completion: with company or corfu (latter already setup via
codeium) - not sure if codeium conflicts with corfu or cider when
doing its suggestions or incorporates those completions into the
suggestions, but it is really not too important.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;code-reloading&#34; class=&#34;anchor-header&#34;&gt;Code Reloading &lt;a class=&#34;anchor-link&#34; href=&#34;#code-reloading&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Clean everything up and reload one or more namespaces cider-ns-refresh,
cider-ns-reload or cider-ns-reload-all&lt;/p&gt;
&lt;h3 id=&#34;pretty-printing&#34; class=&#34;anchor-header&#34;&gt;Pretty Printing &lt;a class=&#34;anchor-link&#34; href=&#34;#pretty-printing&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Probably NA.&lt;/p&gt;
&lt;h3 id=&#34;dealing-with-errors&#34; class=&#34;anchor-header&#34;&gt;Dealing with Errors &lt;a class=&#34;anchor-link&#34; href=&#34;#dealing-with-errors&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Most of the time CIDER will display the errors in a dedicated buffer …
At times, the error being displayed will originate from a bug in CIDER
itself. Error displays can be configured.&lt;/p&gt;
&lt;p&gt;CIDER presents stack traces in a special major mode,
cider-stacktrace-mode. There is a lot that can be done here, so it is
worth knowing how to use.&lt;/p&gt;
&lt;h3 id=&#34;working-with-documentation&#34; class=&#34;anchor-header&#34;&gt;Working with Documentation &lt;a class=&#34;anchor-link&#34; href=&#34;#working-with-documentation&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;C-h . should be initial ref which provides the clojuredocs examples.
However, C-c C-d C-d|w can also be useful because the window is easy to
close and the latter goes right to clojuredocs. If you want the javadoc
use C-c C-d C-j to see it in browser.&lt;/p&gt;
&lt;p&gt;Search in docstrings of all loaded variables with C-c C-d C-e|f which
can be quite useful if you know only some words in a doc, but don&amp;rsquo;t
really know what the item is.&lt;/p&gt;
&lt;p&gt;Cross referencing other documentation can be done inside `` or
[[]] in same namespace or outside (fqdn required). Useful if you’d
like to be able to point other programmers at different definitions.&lt;/p&gt;
&lt;h3 id=&#34;managing-connections&#34; class=&#34;anchor-header&#34;&gt;Managing Connections &lt;a class=&#34;anchor-link&#34; href=&#34;#managing-connections&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h3&gt;
&lt;h3 id=&#34;misc-features&#34; class=&#34;anchor-header&#34;&gt;Misc Features &lt;a class=&#34;anchor-link&#34; href=&#34;#misc-features&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h3&gt;
&lt;h2 id=&#34;using-the-repl&#34; class=&#34;anchor-header&#34;&gt;Using the REPL &lt;a class=&#34;anchor-link&#34; href=&#34;#using-the-repl&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id=&#34;basic-usage&#34; class=&#34;anchor-header&#34;&gt;Basic Usage &lt;a class=&#34;anchor-link&#34; href=&#34;#basic-usage&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h3&gt;
&lt;h3 id=&#34;keybindings-1&#34; class=&#34;anchor-header&#34;&gt;Keybindings &lt;a class=&#34;anchor-link&#34; href=&#34;#keybindings-1&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h3&gt;
&lt;h3 id=&#34;configuration&#34; class=&#34;anchor-header&#34;&gt;Configuration &lt;a class=&#34;anchor-link&#34; href=&#34;#configuration&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h3&gt;
&lt;h3 id=&#34;repl-history&#34; class=&#34;anchor-header&#34;&gt;REPL History &lt;a class=&#34;anchor-link&#34; href=&#34;#repl-history&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h3&gt;
&lt;h2 id=&#34;testing&#34; class=&#34;anchor-header&#34;&gt;Testing &lt;a class=&#34;anchor-link&#34; href=&#34;#testing&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id=&#34;running-tests&#34; class=&#34;anchor-header&#34;&gt;Running Tests &lt;a class=&#34;anchor-link&#34; href=&#34;#running-tests&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h3&gt;
&lt;h3 id=&#34;test-reports&#34; class=&#34;anchor-header&#34;&gt;Test Reports &lt;a class=&#34;anchor-link&#34; href=&#34;#test-reports&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h3&gt;
&lt;h3 id=&#34;supported-libraries&#34; class=&#34;anchor-header&#34;&gt;Supported Libraries &lt;a class=&#34;anchor-link&#34; href=&#34;#supported-libraries&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h3&gt;
&lt;h2 id=&#34;debugging&#34; class=&#34;anchor-header&#34;&gt;Debugging &lt;a class=&#34;anchor-link&#34; href=&#34;#debugging&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id=&#34;debugger&#34; class=&#34;anchor-header&#34;&gt;Debugger &lt;a class=&#34;anchor-link&#34; href=&#34;#debugger&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h3&gt;
&lt;h3 id=&#34;enlighten&#34; class=&#34;anchor-header&#34;&gt;Enlighten &lt;a class=&#34;anchor-link&#34; href=&#34;#enlighten&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h3&gt;
&lt;h3 id=&#34;inspector&#34; class=&#34;anchor-header&#34;&gt;Inspector &lt;a class=&#34;anchor-link&#34; href=&#34;#inspector&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h3&gt;
&lt;h3 id=&#34;logging&#34; class=&#34;anchor-header&#34;&gt;Logging &lt;a class=&#34;anchor-link&#34; href=&#34;#logging&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h3&gt;
&lt;h3 id=&#34;macroexpansion&#34; class=&#34;anchor-header&#34;&gt;Macroexpansion &lt;a class=&#34;anchor-link&#34; href=&#34;#macroexpansion&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h3&gt;
&lt;h3 id=&#34;profiling&#34; class=&#34;anchor-header&#34;&gt;Profiling &lt;a class=&#34;anchor-link&#34; href=&#34;#profiling&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h3&gt;
&lt;h3 id=&#34;tracing&#34; class=&#34;anchor-header&#34;&gt;Tracing &lt;a class=&#34;anchor-link&#34; href=&#34;#tracing&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h3&gt;
&lt;h2 id=&#34;configuration-1&#34; class=&#34;anchor-header&#34;&gt;Configuration &lt;a class=&#34;anchor-link&#34; href=&#34;#configuration-1&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id=&#34;indentation-specification&#34; class=&#34;anchor-header&#34;&gt;Indentation Specification &lt;a class=&#34;anchor-link&#34; href=&#34;#indentation-specification&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h3&gt;
&lt;h3 id=&#34;caveats&#34; class=&#34;anchor-header&#34;&gt;Caveats &lt;a class=&#34;anchor-link&#34; href=&#34;#caveats&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h3&gt;
&lt;h3 id=&#34;troubleshooting&#34; class=&#34;anchor-header&#34;&gt;Troubleshooting &lt;a class=&#34;anchor-link&#34; href=&#34;#troubleshooting&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h3&gt;
&lt;h3 id=&#34;faq&#34; class=&#34;anchor-header&#34;&gt;FAQ &lt;a class=&#34;anchor-link&#34; href=&#34;#faq&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h3&gt;
&lt;h3 id=&#34;additional-packages&#34; class=&#34;anchor-header&#34;&gt;Additional Packages &lt;a class=&#34;anchor-link&#34; href=&#34;#additional-packages&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h3&gt;
&lt;h3 id=&#34;additional-resources&#34; class=&#34;anchor-header&#34;&gt;Additional Resources &lt;a class=&#34;anchor-link&#34; href=&#34;#additional-resources&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h3&gt;
&lt;h2 id=&#34;basics&#34; class=&#34;anchor-header&#34;&gt;basics &lt;a class=&#34;anchor-link&#34; href=&#34;#basics&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;install: M-x package-install &amp;lt;RET&amp;gt; cider &amp;lt;RET&amp;gt;&lt;/li&gt;
&lt;li&gt;run: &lt;strong&gt;launch&lt;/strong&gt; an nREPL or &lt;strong&gt;connect&lt;/strong&gt; to an existing one
&lt;ul&gt;
&lt;li&gt;C-c C-x C-x gives menu of REPL choices (view in messsage buffer)&lt;/li&gt;
&lt;li&gt;C-c M-j cider-jack-in-clj (can run a repl without a project)&lt;/li&gt;
&lt;li&gt;supported build tools: clojure-cli, leiningen, babashka, nbb&lt;/li&gt;
&lt;li&gt;jack-in behavior can be customized or over-ridden&lt;/li&gt;
&lt;li&gt;remote and socket connections are possible too&lt;/li&gt;
&lt;li&gt;there are many advanced features possible with additional nREPL&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;quit: C-c C-q kills REPL&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;using&#34; class=&#34;anchor-header&#34;&gt;using &lt;a class=&#34;anchor-link&#34; href=&#34;#using&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;activate: with (add-hook &amp;lsquo;clojure-mode-hook #&amp;lsquo;cider-mode) or M-x
cider-mode (toggle)&lt;/li&gt;
&lt;li&gt;evaluate: C-c C-k (buffer), C-c C-e (previous form), C-c C-c (current
form)&lt;/li&gt;
&lt;li&gt;interrupt: C-c C-b (stuck)&lt;/li&gt;
&lt;li&gt;jump to/from: C-c C-z (repl), C-u C-c C-z (match namespace)&lt;/li&gt;
&lt;li&gt;ref: C-c C-d C-d|w (docs), M-. (def, but lsp auto-shows)&lt;/li&gt;
&lt;li&gt;search: C-c C-d (C-)a (var), C-c C-d (C-)f (apropos doc)&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&#34;enlive&#34; class=&#34;anchor-header&#34;&gt;&lt;a href=&#34;https://github.com/cgrand/enlive&#34;&gt;enlive&lt;/a&gt; &lt;a class=&#34;anchor-link&#34; href=&#34;#enlive&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;A selector-based (à la CSS) templating library for Clojure.&lt;/p&gt;
&lt;h1 id=&#34;group-by-problem&#34; class=&#34;anchor-header&#34;&gt;group-by problem &lt;a class=&#34;anchor-link&#34; href=&#34;#group-by-problem&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;stackoverflow tests interesting item to look at &lt;a href=&#34;https://stackoverflow.com/questions/35127822/clojure-group-by-too-slow-13-million-lines-file&#34;&gt;Group-by too slow (13
million-lines
file)&lt;/a&gt;
the solution is very instructive and covers generating a test file as
well as timing.&lt;/p&gt;
&lt;h1 id=&#34;hiccup&#34; class=&#34;anchor-header&#34;&gt;&lt;a href=&#34;https://github.com/weavejester/hiccup&#34;&gt;hiccup&lt;/a&gt; &lt;a class=&#34;anchor-link&#34; href=&#34;#hiccup&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;A&lt;/p&gt;
&lt;h1 id=&#34;io&#34; class=&#34;anchor-header&#34;&gt;IO &lt;a class=&#34;anchor-link&#34; href=&#34;#io&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id=&#34;csv-read&#34; class=&#34;anchor-header&#34;&gt;csv read &lt;a class=&#34;anchor-link&#34; href=&#34;#csv-read&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-clojure&#34; data-lang=&#34;clojure&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;defn &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;csv-read&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;s&#34;&gt;&amp;#34;reads a csv file given filename&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;filename&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;map &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;s/trim&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;       &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;first &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;with-open&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;in-file&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;clojure.java.io/reader&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;filename&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;doall&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                 &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;clojure.data.csv/read-csv&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;clojure.java.io/reader&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;in-file&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)))))))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id=&#34;loop-recur&#34; class=&#34;anchor-header&#34;&gt;loop-recur &lt;a class=&#34;anchor-link&#34; href=&#34;#loop-recur&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id=&#34;from-nuen-200708&#34; class=&#34;anchor-header&#34;&gt;from nuen 200708 &lt;a class=&#34;anchor-link&#34; href=&#34;#from-nuen-200708&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-clojure&#34; data-lang=&#34;clojure&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;fn &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;rs&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;nu-seq&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;loop &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;nu&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;nu-seq&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;         &lt;span class=&#34;nv&#34;&gt;brs&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;         &lt;span class=&#34;nv&#34;&gt;prs&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;         &lt;span class=&#34;nv&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;if &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;or &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;&amp;gt; &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;- &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;dohlc-size&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;part-size&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;empty?&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;nu&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;brs&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;prs&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;let &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;nu0&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;first &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;nu-seq&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nv&#34;&gt;hi&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;$&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;:h&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;dohlc&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nv&#34;&gt;lo&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;$&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;:l&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;dohlc&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nv&#34;&gt;cl&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;$&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;:c&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;dohlc&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;is-brs&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;is-prs&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;if &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;= &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;rs&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;r&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                              &lt;span class=&#34;p&#34;&gt;[(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;brs?&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;nu0&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;hi&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;cl&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;&amp;lt; &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;prs?&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;nu0&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;hi&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;cl&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;&amp;gt; &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;+&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                              &lt;span class=&#34;p&#34;&gt;[(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;brs?&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;nu0&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;lo&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;cl&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;&amp;gt; &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;+&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;prs?&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;nu0&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;lo&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;cl&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;&amp;lt; &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;cond&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &lt;span class=&#34;nv&#34;&gt;is-brs&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;recur&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;nu&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;inc &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;brs&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;prs&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;inc &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &lt;span class=&#34;nv&#34;&gt;is-prs&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;recur&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;drop &lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;nu&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;brs&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;inc &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;prs&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;inc &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &lt;span class=&#34;ss&#34;&gt;:else&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;recur&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;nu&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;brs&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;prs&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;inc &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)))))))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id=&#34;project-start&#34; class=&#34;anchor-header&#34;&gt;project start &lt;a class=&#34;anchor-link&#34; href=&#34;#project-start&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Simplest way to start project using cornfeld&amp;rsquo;s clj-new.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-clojure&#34; data-lang=&#34;clojure&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;clj&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;-X&lt;/span&gt;&lt;span class=&#34;ss&#34;&gt;:new-app&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;:name&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;pradesigner/myapp&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;clj&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;-X&lt;/span&gt;&lt;span class=&#34;ss&#34;&gt;:new-lib&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;:name&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;pradesigner/mylib&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;after adding to ~/.clojure/deps.edn: ;; add these into your :aliases
map:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-clojure&#34; data-lang=&#34;clojure&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;ss&#34;&gt;:new-app&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;ss&#34;&gt;:extra-deps&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;com.github.seancorfield/clj-new&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                       &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;ss&#34;&gt;:mvn/version&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;1.1.309&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &lt;span class=&#34;ss&#34;&gt;:exec-fn&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;clj-new/create&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &lt;span class=&#34;ss&#34;&gt;:exec-args&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;ss&#34;&gt;:template&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;app&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;ss&#34;&gt;:new-lib&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;ss&#34;&gt;:extra-deps&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;com.github.seancorfield/clj-new&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                       &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;ss&#34;&gt;:mvn/version&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;1.1.309&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &lt;span class=&#34;ss&#34;&gt;:exec-fn&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;clj-new/create&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &lt;span class=&#34;ss&#34;&gt;:exec-args&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;ss&#34;&gt;:template&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;lib&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}}}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;deps.edn can help you figure out how to do things because of aliases
:run-x :uberjar etc contains howto instructions! clj -X:run-x clj
-X:uberjar&lt;/p&gt;
&lt;h1 id=&#34;regex&#34; class=&#34;anchor-header&#34;&gt;regex &lt;a class=&#34;anchor-link&#34; href=&#34;#regex&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;&lt;a href=&#34;https://ericnormand.me/mini-guide/clojure-regex&#34;&gt;Clojure Regex Tutorial by Eric
Normand&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Construct using a literal syntax: #&amp;ldquo;regex&amp;rdquo;. Don&amp;rsquo;t need to double escape
#&amp;ldquo;&amp;ldquo;̣ (match one digit).&lt;/p&gt;
&lt;h2 id=&#34;matching-a-regex-to-a-string-with-groups&#34; class=&#34;anchor-header&#34;&gt;Matching a regex to a string with groups &lt;a class=&#34;anchor-link&#34; href=&#34;#matching-a-regex-to-a-string-with-groups&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Match an entire string with &lt;strong&gt;re-matches&lt;/strong&gt;.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-clojure&#34; data-lang=&#34;clojure&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;re-matches &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;regex&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;string&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;;;=&amp;gt; result&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;;; No match returns nil&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;re-matches &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;#&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;abc&amp;#34;&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;xyz&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;            &lt;span class=&#34;c1&#34;&gt;;;=&amp;gt; nil&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;re-matches &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;#&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;abc&amp;#34;&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;zzzabcxxx&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;      &lt;span class=&#34;c1&#34;&gt;;;=&amp;gt; nil&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;;; Matching with no groups returns the matched string (truthy)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;re-matches &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;#&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;abc&amp;#34;&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;abc&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;  &lt;span class=&#34;c1&#34;&gt;;;=&amp;gt; &amp;#34;abc&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;re-matches &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;#&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;\d+&amp;#34;&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;3324&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;;;=&amp;gt; &amp;#34;3324&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;;; Matching with groups returns a vector&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;re-matches &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;#&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;abc(.*)&amp;#34;&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;abcxyz&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;       &lt;span class=&#34;c1&#34;&gt;;;=&amp;gt; [&amp;#34;abcxyz&amp;#34; &amp;#34;xyz&amp;#34;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;re-matches &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;#&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;(a+)(b+)(\d+)&amp;#34;&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;abb234&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;;;=&amp;gt; [&amp;#34;abb234&amp;#34; &amp;#34;a&amp;#34; &amp;#34;bb&amp;#34; &amp;#34;234&amp;#34;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;finding-a-regex-substring-within-a-string-with-groups&#34; class=&#34;anchor-header&#34;&gt;Finding a regex substring within a string with groups &lt;a class=&#34;anchor-link&#34; href=&#34;#finding-a-regex-substring-within-a-string-with-groups&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Using &lt;strong&gt;re-find&lt;/strong&gt; returns the first match within the string. It can also
be used to see if one string contains another though
clojure.string/includes? is likely a better choice.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-clojure&#34; data-lang=&#34;clojure&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;re-find &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;regex&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;string&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;;; No match returns nil&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;re-find &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;#&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;sss&amp;#34;&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;Loch Ness&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;;;=&amp;gt; nil&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;;; Match without groups returns the matched string&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;re-find &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;#&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;s+&amp;#34;&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;mississipi&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;;;=&amp;gt; &amp;#34;ss&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;;; Match with groups returns a vector&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;re-find &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;#&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;s+(.*)(s+)&amp;#34;&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;success&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;;;=&amp;gt; [&amp;#34;success&amp;#34; &amp;#34;ucces&amp;#34; &amp;#34;s&amp;#34;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;finding-all-substrings-that-match-within-a-string&#34; class=&#34;anchor-header&#34;&gt;Finding all substrings that match within a string &lt;a class=&#34;anchor-link&#34; href=&#34;#finding-all-substrings-that-match-within-a-string&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Return a lazy seq of all of the matches with &lt;strong&gt;re-seq&lt;/strong&gt;.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-clojure&#34; data-lang=&#34;clojure&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;re-seq &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;regex&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;string&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;re-seq &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;#&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;s+&amp;#34;&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;mississippi&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;;;=&amp;gt; (&amp;#34;ss&amp;#34; &amp;#34;ss&amp;#34;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;re-seq &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;#&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;[a-zA-Z](\d+)&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;s&#34;&gt;&amp;#34;abc x123 b44 234&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;  &lt;span class=&#34;c1&#34;&gt;;;=&amp;gt; ([&amp;#34;x123&amp;#34; &amp;#34;123&amp;#34;] [&amp;#34;b44&amp;#34; &amp;#34;44&amp;#34;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;replacing-regex-matches-within-a-string&#34; class=&#34;anchor-header&#34;&gt;Replacing regex matches within a string &lt;a class=&#34;anchor-link&#34; href=&#34;#replacing-regex-matches-within-a-string&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Replace all or first substring that matches with some other string with
a string or a calculated function using &lt;strong&gt;clojure.string/replace&lt;/strong&gt;.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-clojure&#34; data-lang=&#34;clojure&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;clojure.string/replace&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;string&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;regex&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;replacement&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;str/replace&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;mississippi&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;#&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;i..&amp;#34;&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;obb&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;;;=&amp;gt; &amp;#34;mobbobbobbi&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;str/replace&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;mississippi&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;#&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;(i)&amp;#34;&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;$1$1&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;;;=&amp;gt; &amp;#34;miissiissiippii&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;str/replace&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;mississippi&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;             &lt;span class=&#34;o&#34;&gt;#&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;(.)i(.)&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;             &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;fn &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[[&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;_&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;b&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;a&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;               &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;str &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;str/upper-case&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;b&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                    &lt;span class=&#34;s&#34;&gt;&amp;#34;—&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                    &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;str/upper-case&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;a&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))))&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;;;=&amp;gt; &amp;#34;M—SS—SS—Ppi&amp;#34; !!!&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;splitting-a-string-by-a-regex&#34; class=&#34;anchor-header&#34;&gt;Splitting a string by a regex &lt;a class=&#34;anchor-link&#34; href=&#34;#splitting-a-string-by-a-regex&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;To split a string on some character pattern, like one or more whitespace
use &lt;strong&gt;clojure.string/split&lt;/strong&gt;.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-clojure&#34; data-lang=&#34;clojure&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;clojure.string/split&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;string&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;regex&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;str/split&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;This is a string    that I am splitting.&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;#&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;\s+&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;;;=&amp;gt; [&amp;#34;This&amp;#34; &amp;#34;is&amp;#34; &amp;#34;a&amp;#34; &amp;#34;string&amp;#34; &amp;#34;that&amp;#34; &amp;#34;I&amp;#34; &amp;#34;am&amp;#34; &amp;#34;splitting.&amp;#34;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;string-contains-a-substring&#34; class=&#34;anchor-header&#34;&gt;String contains a substring &lt;a class=&#34;anchor-link&#34; href=&#34;#string-contains-a-substring&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Various ways to determine if there is a substring in a string.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-clojure&#34; data-lang=&#34;clojure&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;re-find &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;#&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;needle&amp;#34;&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;Find a needle in a haystack.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;;;=&amp;gt; &amp;#34;needle&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;re-find &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;#&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;needle&amp;#34;&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;Empty haystack.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;              &lt;span class=&#34;c1&#34;&gt;;;=&amp;gt; nil&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;str/includes?&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;Find a needle in a haystack.&amp;#34;&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;needle&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;;;=&amp;gt; true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;str/includes?&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;Empty haystack.&amp;#34;&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;needle&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;              &lt;span class=&#34;c1&#34;&gt;;;=&amp;gt; false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;re-find &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;#&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;^This string&amp;#34;&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;This string starts with ...&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;;;=&amp;gt; &amp;#34;This string&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;re-find &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;#&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;end$&amp;#34;&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;Find a string at the end&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;            &lt;span class=&#34;c1&#34;&gt;;;=&amp;gt; &amp;#34;end&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;str/starts-with?&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;This string starts with ...&amp;#34;&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;This string&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;;;=&amp;gt; true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;str/ends-with?&lt;/span&gt;   &lt;span class=&#34;s&#34;&gt;&amp;#34;Find a string at the end&amp;#34;&lt;/span&gt;    &lt;span class=&#34;s&#34;&gt;&amp;#34;end&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;         &lt;span class=&#34;c1&#34;&gt;;;=&amp;gt; true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;escaping-regex&#34; class=&#34;anchor-header&#34;&gt;Escaping regex &lt;a class=&#34;anchor-link&#34; href=&#34;#escaping-regex&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Trying to match a regex symbol containing string can be done with
&lt;strong&gt;java.util.regex.Pattern&lt;/strong&gt; and is much preferable to trying to escape
escapes (which can&amp;rsquo;t be done anyway).&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-clojure&#34; data-lang=&#34;clojure&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;(??^$]&amp;#34;&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;;; A string I want to match literally&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;#&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;\(\?\?\^\$\]&amp;#34;&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;;; you can&amp;#39;t escape the escapes!&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;Pattern/quote&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;(??^$]&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;;;=&amp;gt; &amp;#34;\\Q(??^$]\\E&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;-&amp;gt; &lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;(??^$]&amp;#34;&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;Pattern/quote&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;Pattern/compile&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;;;=&amp;gt; #&amp;#34;\Q(??^$]\E&amp;#34; !!!&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;joining-regex&#34; class=&#34;anchor-header&#34;&gt;Joining regex &lt;a class=&#34;anchor-link&#34; href=&#34;#joining-regex&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;howto combine strings and regex
&lt;a href=&#34;https://stackoverflow.com/questions/21416917/multiple-regular-expressions-in-clojure&#34;&gt;https://stackoverflow.com/questions/21416917/multiple-regular-expressions-in-clojure&lt;/a&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-clojure&#34; data-lang=&#34;clojure&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;defn &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;union-regex&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;patterns&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;sc&#34;&gt;\\\&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;joins&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;regex&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;together&lt;/span&gt;&lt;span class=&#34;sc&#34;&gt;\&amp;#34;&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;with&lt;/span&gt; &lt;span class=&#34;err&#34;&gt;|&lt;/span&gt;&lt;span class=&#34;sc&#34;&gt;\&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;re-pattern&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;apply &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;str&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;interpose&lt;/span&gt; &lt;span class=&#34;sc&#34;&gt;\&amp;#34;&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;|&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                     &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;map &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;#&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;str &lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;(&amp;#34;&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;%&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;)&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                          &lt;span class=&#34;nv&#34;&gt;patterns&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)))))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;union-regex&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;#&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;\w+ &amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;re-pattern &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;w&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34; &amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;#&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;\w+&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;;; w set to &amp;#34;how&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;=&amp;gt; #&amp;rdquo;(+ )|(how)|( )|(+)&amp;rdquo;&lt;/p&gt;
&lt;p&gt;or this solution from webscraper project&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-clojure&#34; data-lang=&#34;clojure&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;defn &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;join-regex&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;amp;&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;patterns&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;s&#34;&gt;&amp;#34;joins regex together&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;re-pattern&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;apply &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;str&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;map &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;#&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;str &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;%&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;               &lt;span class=&#34;nv&#34;&gt;patterns&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;join-regex&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;#&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;\w+ &amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;re-pattern &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;w&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34; &amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;#&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;\w+&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;;; w set to &amp;#34;how&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;=&amp;gt; #&amp;quot;+ how +&amp;quot;&lt;/p&gt;
&lt;h2 id=&#34;extract-whole-sentences-with-matching-word&#34; class=&#34;anchor-header&#34;&gt;Extract whole sentences with matching word &lt;a class=&#34;anchor-link&#34; href=&#34;#extract-whole-sentences-with-matching-word&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://stackoverflow.com/questions/26081820/regular-expression-to-extract-whole-sentences-with-matching-word&#34;&gt;https://stackoverflow.com/questions/26081820/regular-expression-to-extract-whole-sentences-with-matching-word&lt;/a&gt;
[^.]* flung [^.]*\
[^.?!]*(?&amp;lt;=[.?!])flung(?=[.?!])[^.?!]*[.?!]&lt;/p&gt;
&lt;h1 id=&#34;scrapers&#34; class=&#34;anchor-header&#34;&gt;scrapers &lt;a class=&#34;anchor-link&#34; href=&#34;#scrapers&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/shriphani/pegasus&#34;&gt;pegasus&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/mischov/reaver&#34;&gt;reaver&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/nathell/skyscraper&#34;&gt;skyscraper&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&#34;string&#34; class=&#34;anchor-header&#34;&gt;string &lt;a class=&#34;anchor-link&#34; href=&#34;#string&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;clojure.string functions&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;blank?
capitalize
ends-with?
escape
includes?
index-of
join
last-index-of
lower-case
re-quote-replacement
replace
replace-first
reverse
split
split-lines
starts-with?
trim
trim-newline
triml
trimr
upper-case
&lt;/code&gt;&lt;/pre&gt;
&lt;h1 id=&#34;official-clojure-site&#34; class=&#34;anchor-header&#34;&gt;official clojure site &lt;a class=&#34;anchor-link&#34; href=&#34;#official-clojure-site&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Use &lt;a href=&#34;https://clojure.org/&#34;&gt;clojure.org&lt;/a&gt; as a reference for working with
Clojure, but also put in specifics about own setup and tools.&lt;/p&gt;
&lt;h2 id=&#34;overview-1&#34; class=&#34;anchor-header&#34;&gt;Overview &lt;a class=&#34;anchor-link&#34; href=&#34;#overview-1&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Why Clojure?&lt;/li&gt;
&lt;li&gt;Lisp is a good thing&lt;/li&gt;
&lt;li&gt;Functional programming is a good thing&lt;/li&gt;
&lt;li&gt;Languages and Platforms&lt;/li&gt;
&lt;li&gt;Object Orientation is overrated&lt;/li&gt;
&lt;li&gt;Polymorphism is a good thing&lt;/li&gt;
&lt;li&gt;Concurrency and the multi-core future&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;guides&#34; class=&#34;anchor-header&#34;&gt;Guides &lt;a class=&#34;anchor-link&#34; href=&#34;#guides&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;LEARNING
&lt;ul&gt;
&lt;li&gt;Getting Started
&lt;ul&gt;
&lt;li&gt;emacs editor&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/joaotavora/eglot&#34;&gt;eglot&lt;/a&gt; Eglot is the Emacs
client for the Language Server Protocol (LSP), which provides
advanced programming language support and features for code
editing in Emacs. It can do Language Server Integration,
Auto-Completion, Go to Definition (M-.), Find References (M-?),
Error Highlighting and Code Diagnostics (with flymake), Signature
Help, Refactoring Support.&lt;/li&gt;
&lt;li&gt;clojure-lsp don&amp;rsquo;t need to use it directly as a mode because eglot
looks after that, but it does need to be installed. For instance,
Find references didn&amp;rsquo;t work when it was not installed. Perplexity
got this wrong.&lt;/li&gt;
&lt;li&gt;cider see details in cider section and look in the
&lt;a href=&#34;https://docs.cider.mx/cider/index.html&#34;&gt;manual&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Install Clojure&lt;/li&gt;
&lt;li&gt;Editors&lt;/li&gt;
&lt;li&gt;Structural Editing&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;REPL Programming
&lt;ul&gt;
&lt;li&gt;Introduction&lt;/li&gt;
&lt;li&gt;Launching a basic REPL&lt;/li&gt;
&lt;li&gt;Basic Usage&lt;/li&gt;
&lt;li&gt;Data Visualization at the REPL&lt;/li&gt;
&lt;li&gt;Navigating namespaces&lt;/li&gt;
&lt;li&gt;Enhancing your REPL workflow&lt;/li&gt;
&lt;li&gt;Guidelines for REPL-Aided Development&lt;/li&gt;
&lt;li&gt;Community resources&lt;/li&gt;
&lt;li&gt;Troubleshooting&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Learn Clojure
&lt;ul&gt;
&lt;li&gt;Introduction&lt;/li&gt;
&lt;li&gt;Syntax&lt;/li&gt;
&lt;li&gt;Functions&lt;/li&gt;
&lt;li&gt;Sequential Collections&lt;/li&gt;
&lt;li&gt;Hashed Collections&lt;/li&gt;
&lt;li&gt;Flow Control&lt;/li&gt;
&lt;li&gt;Namespaces&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;FAQ&lt;/li&gt;
&lt;li&gt;LANGUAGE
&lt;ul&gt;
&lt;li&gt;spec&lt;/li&gt;
&lt;li&gt;Reading Clojure Characters&lt;/li&gt;
&lt;li&gt;Destructuring&lt;/li&gt;
&lt;li&gt;Threading Macros&lt;/li&gt;
&lt;li&gt;Equality&lt;/li&gt;
&lt;li&gt;Comparators&lt;/li&gt;
&lt;li&gt;Reader Conditionals&lt;/li&gt;
&lt;li&gt;Higher Order Functions&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;USAGE
&lt;ul&gt;
&lt;li&gt;Dev Startup Time&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;TOOLS
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Deps and CLI
~/.clojure/deps.edn (global deps.edn no :deps)&lt;br&gt;
clj -X:deps find-versions :lib clojure.java-time/clojure.java-time&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;tools.build&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;LIBRARIES
&lt;ul&gt;
&lt;li&gt;core.async Walkthrough&lt;/li&gt;
&lt;li&gt;Go Block Best Practices&lt;/li&gt;
&lt;li&gt;test.check&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;reference&#34; class=&#34;anchor-header&#34;&gt;Reference &lt;a class=&#34;anchor-link&#34; href=&#34;#reference&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Reader forms&lt;/li&gt;
&lt;li&gt;Macro characters&lt;/li&gt;
&lt;li&gt;Tagged Literals&lt;/li&gt;
&lt;li&gt;Reader Conditionals&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;community&#34; class=&#34;anchor-header&#34;&gt;Community &lt;a class=&#34;anchor-link&#34; href=&#34;#community&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Success Stories&lt;/li&gt;
&lt;li&gt;Community Stories&lt;/li&gt;
&lt;li&gt;Companies&lt;/li&gt;
&lt;li&gt;Tools&lt;/li&gt;
&lt;li&gt;Libraries&lt;/li&gt;
&lt;li&gt;Contributing&lt;/li&gt;
&lt;li&gt;Community Resources&lt;/li&gt;
&lt;li&gt;Forum&lt;/li&gt;
&lt;li&gt;Events&lt;/li&gt;
&lt;li&gt;Training&lt;/li&gt;
&lt;li&gt;Etiquette&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;HELP&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Books&lt;/li&gt;
&lt;li&gt;User Groups&lt;/li&gt;
&lt;li&gt;Starting a User Group&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SITE UPDATES&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Site Contributions&lt;/li&gt;
&lt;li&gt;Editing tips&lt;/li&gt;
&lt;li&gt;License&lt;/li&gt;
&lt;li&gt;Privacy Policy&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ETC&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Swag&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;api&#34; class=&#34;anchor-header&#34;&gt;API &lt;a class=&#34;anchor-link&#34; href=&#34;#api&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Clojure API&lt;/li&gt;
&lt;li&gt;ClojureScript API&lt;/li&gt;
&lt;li&gt;Clojure Contrib Libraries&lt;/li&gt;
&lt;li&gt;Other resources: &lt;a href=&#34;https://clojuredocs.org/&#34;&gt;ClojureDocs&lt;/a&gt; and
&lt;a href=&#34;https://cljdoc.org/&#34;&gt;cljdoc&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;dev&#34; class=&#34;anchor-header&#34;&gt;DEV &lt;a class=&#34;anchor-link&#34; href=&#34;#dev&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;LANGUAGE DEV&lt;/li&gt;
&lt;li&gt;Development&lt;/li&gt;
&lt;li&gt;Contributor Agreement&lt;/li&gt;
&lt;li&gt;Workflow&lt;/li&gt;
&lt;li&gt;Creating Tickets&lt;/li&gt;
&lt;li&gt;Developing Patches&lt;/li&gt;
&lt;li&gt;Screening Tickets&lt;/li&gt;
&lt;li&gt;Contributors&lt;/li&gt;
&lt;li&gt;CONTRIB LIBS&lt;/li&gt;
&lt;li&gt;Contrib libs&lt;/li&gt;
&lt;li&gt;Contrib lib history&lt;/li&gt;
&lt;li&gt;RESOURCES&lt;/li&gt;
&lt;li&gt;Source&lt;/li&gt;
&lt;li&gt;Support Portal&lt;/li&gt;
&lt;li&gt;Issue Tracker&lt;/li&gt;
&lt;li&gt;Downloads&lt;/li&gt;
&lt;li&gt;API Docs&lt;/li&gt;
&lt;li&gt;License&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;releases&#34; class=&#34;anchor-header&#34;&gt;Releases &lt;a class=&#34;anchor-link&#34; href=&#34;#releases&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;CLOJURE&lt;/li&gt;
&lt;li&gt;Current Release&lt;/li&gt;
&lt;li&gt;Older Releases&lt;/li&gt;
&lt;li&gt;Dev Changelog&lt;/li&gt;
&lt;li&gt;Download key&lt;/li&gt;
&lt;li&gt;CLOJURE TOOLS&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://clojure.org/releases/tools&#34;&gt;Tools Releases&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;news&#34; class=&#34;anchor-header&#34;&gt;News &lt;a class=&#34;anchor-link&#34; href=&#34;#news&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Ongoing and updated regularly.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://clojure.org&#34;&gt;Clojure website&lt;/a&gt; &lt;a href=&#34;http://clojure-doc.org/articles/tutorials/introduction.html&#34;&gt;Clojure
Documentation&lt;/a&gt;
&lt;a href=&#34;https://clojure.org/api/cheatsheet&#34;&gt;clojure cheatsheet&lt;/a&gt;
&lt;a href=&#34;https://docs.cider.mx/cider/&#34;&gt;CIDER&lt;/a&gt;
&lt;a href=&#34;https://clojuredocs.org/&#34;&gt;ClojureDocs&lt;/a&gt; &lt;a href=&#34;https://ask.clojure.org/&#34;&gt;ask.clojure
forum&lt;/a&gt; &lt;a href=&#34;http://pedestal.io/&#34;&gt;Pedestal&lt;/a&gt; &lt;a href=&#34;https://cljdoc.org/d/kixi/stats/0.5.0/doc/readme&#34;&gt;kixi
stats&lt;/a&gt;&lt;/p&gt;
&lt;h1 id=&#34;websites&#34; class=&#34;anchor-header&#34;&gt;websites &lt;a class=&#34;anchor-link&#34; href=&#34;#websites&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.cider.mx/cider/&#34;&gt;CIDER&lt;/a&gt;&lt;br&gt;
Clojure(Script) Interactive Development Environment that Rocks
extends Emacs with support for interactive programming in Clojure.
The features are centered around cider-mode, an Emacs minor-mode
that complements clojure-mode and clojure-ts-mode. While
clojure-mode supports editing Clojure source files, cider-mode adds
support for interacting with a running Clojure process for
compilation, debugging, definition and documentation lookup, running
tests and so on.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://clojuredocs.org/&#34;&gt;ClojureDocs&lt;/a&gt;&lt;br&gt;
ClojureDocs is a community-powered documentation and examples
repository for the Clojure programming language.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://ask.clojure.org/&#34;&gt;Clojure Q &amp;amp; A&lt;/a&gt;&lt;br&gt;
At Clojure Q&amp;amp;A, you can ask questions and receive answers from
members of the Clojure community.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://pedestal.io/&#34;&gt;Pedestal&lt;/a&gt;&lt;br&gt;
A set of libraries that to build web services and applications. It
runs in the back-end and can handle anything from tiny static web
sites, to traditional page oriented applications, to dynamic single
page applications utilizing server-sent events and WebSockets.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://cljdoc.org/d/kixi/stats/0.5.0/doc/readme&#34;&gt;kixi.stats&lt;/a&gt;&lt;br&gt;
A Clojure/ClojureScript library of statistical sampling and
transducing functions.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.clojure-toolbox.com/&#34;&gt;Clojure Toolbox&lt;/a&gt;&lt;br&gt;
A categorised directory of libraries and tools for Clojure.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://clojars.org/&#34;&gt;Clojars&lt;/a&gt;&lt;br&gt;
This is an easy to use community
repository for open source Clojure libraries.&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&#34;videos&#34; class=&#34;anchor-header&#34;&gt;videos &lt;a class=&#34;anchor-link&#34; href=&#34;#videos&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=7PoajCqNKpg&amp;amp;list=WL&amp;amp;index=65&amp;amp;t=26s&#34;&gt;Physics in Clojure - Colin
Smith&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=O6g5C4jUCUc&amp;amp;list=WL&amp;amp;index=64&amp;amp;t=1047s&#34;&gt;Emacs and Clojure, a Lispy Love
Affair&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=vK1DazRK_a0&amp;amp;list=WL&amp;amp;index=63&amp;amp;t=370s&#34;&gt;Solving Problems the Clojure Way - Rafal
Dittwald&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=0m6wz2vClQI&#34;&gt;Building Machine Learning Models with Clojure and Cortex - Joyce
Xu&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=SLRSOyR47Ro&amp;amp;t=1186s&#34;&gt;Why Clojure? by Vijay
Kiran&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=eLl6_k_fZn4&#34;&gt;Deep Learning Needs Clojure - Carin
Meier&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&#34;zz&#34; class=&#34;anchor-header&#34;&gt;zz &lt;a class=&#34;anchor-link&#34; href=&#34;#zz&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id=&#34;ideas&#34; class=&#34;anchor-header&#34;&gt;ideas &lt;a class=&#34;anchor-link&#34; href=&#34;#ideas&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;do programming with awareness of each function&amp;rsquo;s io&lt;/p&gt;
&lt;h2 id=&#34;snippets&#34; class=&#34;anchor-header&#34;&gt;snippets &lt;a class=&#34;anchor-link&#34; href=&#34;#snippets&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;h2 id=&#34;alternate-possibilities-with-or&#34; class=&#34;anchor-header&#34;&gt;alternate possibilities with or &lt;a class=&#34;anchor-link&#34; href=&#34;#alternate-possibilities-with-or&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-clojure&#34; data-lang=&#34;clojure&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;defn &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;mk-tohlc&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;s&#34;&gt;&amp;#34;creates the dataset with date, open, high, low, close from filename&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;fpath&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;let &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;time &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;or &lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;t&amp;#34;&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;column-0&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nv&#34;&gt;open&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;or &lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;o&amp;#34;&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;column-1&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nv&#34;&gt;high&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;or &lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;h&amp;#34;&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;column-2&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nv&#34;&gt;low&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;or &lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;l&amp;#34;&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;column-3&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nv&#34;&gt;close&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;or &lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;c&amp;#34;&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;column-4&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;rename-columns&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;-&amp;gt;dataset&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;fpath&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;ss&#34;&gt;:header-row?&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                            &lt;span class=&#34;ss&#34;&gt;:parser-fn&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;time &lt;/span&gt;&lt;span class=&#34;ss&#34;&gt;:string&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                                        &lt;span class=&#34;nv&#34;&gt;open&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;:float32&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                                        &lt;span class=&#34;nv&#34;&gt;high&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;:float32&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                                        &lt;span class=&#34;nv&#34;&gt;low&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;:float32&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                                        &lt;span class=&#34;nv&#34;&gt;close&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;:float32&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}})&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;time &lt;/span&gt;&lt;span class=&#34;ss&#34;&gt;:time&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;open&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;:open&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;high&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;:high&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;low&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;:low&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;close&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;:close&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;})))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;files&#34; class=&#34;anchor-header&#34;&gt;files &lt;a class=&#34;anchor-link&#34; href=&#34;#files&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://stackoverflow.com/questions/8566531/listing-files-in-a-directory-in-clojure&#34;&gt;Listing files in a directory in Clojure&lt;/a&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-clojure&#34; data-lang=&#34;clojure&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;seq &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;.list&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;clojure.java.io/file&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;map &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;#&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;.getPath&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;%&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;file-seq &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;clojure.java.io/file&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;a href=&#34;https://clojuredocs.org/clojure.java.io/file&#34;&gt;file&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;fs - File system utilities for clojure &lt;a href=&#34;https://github.com/Raynes/fs&#34;&gt;https://github.com/Raynes/fs&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;;using regex&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-clojure&#34; data-lang=&#34;clojure&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;def &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;files&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;filter &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;#&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;re-find &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;#&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;1D|4H&amp;#34;&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;%&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;map &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;#&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;.getPath&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;%&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;               &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;file-seq &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;clojure.java.io/file&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;/zata/truefx&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)))))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;;using string&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-clojure&#34; data-lang=&#34;clojure&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;def &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;files&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;filter &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;#&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;clojure.string/includes?&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;%&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;1D&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;map &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;#&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;.getPath&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;%&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;               &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;file-seq &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;clojure.java.io/file&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;/zata/truefx&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)))))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;;going through a vector&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-clojure&#34; data-lang=&#34;clojure&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;def &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;files&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;map &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;fn &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;         &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;filter &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;#&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;clojure.string/includes?&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;%&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                 &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;map &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;#&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;.getPath&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;%&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                      &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;file-seq &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;clojure.java.io/file&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;/zata/truefx&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)))))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;       &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;1D&amp;#34;&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;4H&amp;#34;&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;1D&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;files-from-filepaths&#34; class=&#34;anchor-header&#34;&gt;files from filepaths &lt;a class=&#34;anchor-link&#34; href=&#34;#files-from-filepaths&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-clojure&#34; data-lang=&#34;clojure&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;def &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;filepaths&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;s&#34;&gt;&amp;#34;produces a list of truefx path strings&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;flatten&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;map &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;fn &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;sort &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;filter &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;#&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;str/includes?&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;%&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                                &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;map &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;#&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;.getPath&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;%&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                                     &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;file-seq &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;clojure.java.io/file&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;/zata/truefx&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))))))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;1D&amp;#34;&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;4H&amp;#34;&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;1H&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;])))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;def &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;filenames&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;s&#34;&gt;&amp;#34;extracts file names from file paths&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;map &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;#&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;last &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;%&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;       &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;map &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;#&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;str/split&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;%&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;#&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;/&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;               &lt;span class=&#34;nv&#34;&gt;filepaths&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;partitions-and-maxmin&#34; class=&#34;anchor-header&#34;&gt;partitions and maxmin &lt;a class=&#34;anchor-link&#34; href=&#34;#partitions-and-maxmin&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;since partition gives list, we need to apply max to each list we map the
apply max over the partitions&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-clojure&#34; data-lang=&#34;clojure&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;map &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;#&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;apply max &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;%&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;partition&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;r&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;removing-nil&#34; class=&#34;anchor-header&#34;&gt;removing nil &lt;a class=&#34;anchor-link&#34; href=&#34;#removing-nil&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-clojure&#34; data-lang=&#34;clojure&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;filter &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;#&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;not&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;nil? &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;%&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;nil&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;nil&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;remove nil? &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;nil&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;nil&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;finding-nu&#34; class=&#34;anchor-header&#34;&gt;finding nu &lt;a class=&#34;anchor-link&#34; href=&#34;#finding-nu&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-clojure&#34; data-lang=&#34;clojure&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;defn &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;nusr&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;s&#34;&gt;&amp;#34;identifies sr-levels for instrument using nu&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;fp&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;let &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[[&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;o&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;h&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;l&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;c&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;fn &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;pf&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;inst-info&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;fp&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nv&#34;&gt;part-size&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nv&#34;&gt;step-size&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nv&#34;&gt;midpt&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;quot &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;part-size&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nv&#34;&gt;hi&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;partition&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;part-size&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;step-size&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;h&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nv&#34;&gt;lo&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;partition&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;part-size&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;step-size&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;l&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nv&#34;&gt;n&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;remove nil? &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;map &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;#&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;nu&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;%&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;max &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;midpt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;hi&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nv&#34;&gt;u&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;remove nil? &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;map &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;#&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;nu&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;%&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;min &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;midpt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;lo&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;ss&#34;&gt;:ns&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;n&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;:us&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;u&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;defn &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;nu&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;s&#34;&gt;&amp;#34;finds a nu given seq, maxmin, midpt of seq&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;sq&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;maxmin&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;midpt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;let &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;midval&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;nth &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;sq&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;midpt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;when &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;= &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;apply &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;maxmin&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;sq&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;midval&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nv&#34;&gt;midval&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;nusr&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;first &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;truefx-filepaths&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;combining-vectors&#34; class=&#34;anchor-header&#34;&gt;combining vectors &lt;a class=&#34;anchor-link&#34; href=&#34;#combining-vectors&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;problem came up trying to work with bounsr and penesr where we needed to
take 2 vectors and generate a vector of vectors matching items in
sequence:&lt;/p&gt;
&lt;p&gt;[4 4 6] [7 8 9] =&amp;gt; [[4 7] [4 8] [6 9]]&lt;/p&gt;
&lt;p&gt;(zipmap [4 4 6] [7 8 9]) =&amp;gt; {4 8, 6 9} due to repetition of the 4
because it is a map&lt;/p&gt;
&lt;p&gt;this thread &lt;a href=&#34;https://stackoverflow.com/questions/2588227/is-there-an-equivalent-for-the-zip-function-in-clojure-core-or-contrib&#34;&gt;Is there an equivalent for the Zip function in
Clojure&lt;/a&gt;
had 2 solutions:&lt;/p&gt;
&lt;p&gt;(map vector [4 4 6] [7 8 9]) =&amp;gt; ([4 7] [4 8] [6 9])
(partition 2 (interleave [1 2 3] [4 5 6])) =&amp;gt; ((1 4) (2 5) (3 6))&lt;/p&gt;
&lt;p&gt;(interleave [1 2 3] [4 5 6] [7 8 9]) (apply interleave [[1 2 3]
[4 5 6] [7 8 9]])&lt;/p&gt;
&lt;p&gt;or as a function&lt;/p&gt;
&lt;p&gt;(defn zip [&amp;amp; colls] (partition (count colls) (apply interleave
colls)))&lt;/p&gt;
&lt;h2 id=&#34;diff-btn-map-and-apply&#34; class=&#34;anchor-header&#34;&gt;diff btn map and apply &lt;a class=&#34;anchor-link&#34; href=&#34;#diff-btn-map-and-apply&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;(apply F [1 2 3 4 5]) =&amp;gt; (F 1 2 3 4 5) (map F [1 2 3 4 5]) =&amp;gt;
[(F 1) (F 2) (F 3) (F 4) (F 5)]
&lt;a href=&#34;https://stackoverflow.com/questions/2311528/clojure-apply-vs-map&#34;&gt;https://stackoverflow.com/questions/2311528/clojure-apply-vs-map&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;use-a-vector-as-a-lifo-stack-to-check-for-balanced-brackets&#34; class=&#34;anchor-header&#34;&gt;Use a vector as a LIFO stack to check for balanced brackets &lt;a class=&#34;anchor-link&#34; href=&#34;#use-a-vector-as-a-lifo-stack-to-check-for-balanced-brackets&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-clojure&#34; data-lang=&#34;clojure&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;require&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;clojure.set&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;:refer&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;map-invert&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;defn &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;balance&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;form&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;let &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;brackets&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;sc&#34;&gt;\[&lt;/span&gt; &lt;span class=&#34;sc&#34;&gt;\]&lt;/span&gt; &lt;span class=&#34;sc&#34;&gt;\(&lt;/span&gt; &lt;span class=&#34;sc&#34;&gt;\)&lt;/span&gt; &lt;span class=&#34;sc&#34;&gt;\{&lt;/span&gt; &lt;span class=&#34;sc&#34;&gt;\}&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nv&#34;&gt;scan&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;fn &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;q&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;               &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;cond&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                 &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;brackets&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;conj &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;q&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                 &lt;span class=&#34;p&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;map-invert &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;brackets&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                 &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;if &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;= &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;brackets&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;peek &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;q&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                   &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;pop &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;q&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                   &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;throw&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                     &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;ex-info&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                       &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;str &lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;Unmatched delimiter &amp;#34;&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{})))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                 &lt;span class=&#34;ss&#34;&gt;:else&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;q&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;reduce &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;scan&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[]&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;form&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;balance&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;(let [a (inc 1]) (+ a 2))&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;ExceptionInfo&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;Unmatched&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;delimiter&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;balance&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;(let [a (inc 1)] (+ a 2))&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;[]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;dataset-vs-matrix&#34; class=&#34;anchor-header&#34;&gt;dataset vs matrix &lt;a class=&#34;anchor-link&#34; href=&#34;#dataset-vs-matrix&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;(type (incanter/to-matrix ds)) mikera.arrayz.impl.JoinedArray or
vectorz/matrix (type (m/array ds)) clojure.lang.PersistentVector&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;&lt;/th&gt;
          &lt;th&gt;&lt;/th&gt;
          &lt;th&gt;&lt;/th&gt;
          &lt;th&gt;&lt;/th&gt;
          &lt;th&gt;&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;cmd&lt;/td&gt;
          &lt;td&gt;dataset&lt;/td&gt;
          &lt;td&gt;matrix&lt;/td&gt;
          &lt;td&gt;array&lt;/td&gt;
          &lt;td&gt;lazyseq&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;head,tail&lt;/td&gt;
          &lt;td&gt;y&lt;/td&gt;
          &lt;td&gt;y&lt;/td&gt;
          &lt;td&gt;y&lt;/td&gt;
          &lt;td&gt;n&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;take,drop&lt;/td&gt;
          &lt;td&gt;y&lt;/td&gt;
          &lt;td&gt;y&lt;/td&gt;
          &lt;td&gt;y&lt;/td&gt;
          &lt;td&gt;y&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;getting-stuff-out-of-incanter-dataset-dohlc&#34; class=&#34;anchor-header&#34;&gt;getting stuff out of incanter dataset dohlc &lt;a class=&#34;anchor-link&#34; href=&#34;#getting-stuff-out-of-incanter-dataset-dohlc&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;clojure.core.matrix.impl.dataset.DataSet&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;using $ producing lazyseq&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;his ($ :h dohlc) clojure.lang.LazySeq or (sel dohlc :cols :h) los ($
:l dohlc) clojure.lang.LazySeq or (sel dohlc :cols :l)&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;using to-map producing persistent vectors&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;ds (d/to-map dohlc) clojure.lang.PersistentArrayMap his (:h ds)
clojure.lang.PersistentVector los (:l ds) clojure.lang.PersistentVector&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;using m/array producing vectorz&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;ds (d/to-map dohlc) clojure.lang.PersistentArrayMap his (m/array (:h
ds)) mikera.vectorz.Vector los (m/array (:l ds)) mikera.vectorz.Vector
can&amp;rsquo;t (m/array ds) because clojure.lang.PersistentArrayMap cannot be
cast to java.lang.Number though (type (m/array d))
clojure.lang.PersistentVector&lt;/p&gt;
&lt;h2 id=&#34;sel-vs-&#34; class=&#34;anchor-header&#34;&gt;sel vs $ &lt;a class=&#34;anchor-link&#34; href=&#34;#sel-vs-&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;it seems as though we can use $ for pretty well everything we use sel
for (sel d :cols :h) &amp;lt;=&amp;gt; ($ :h d) (sel d :rows (range 2 11) :cols :d)
&amp;lt;=&amp;gt; ($ (range 1 11) :d d) (sel d :rows 1 :cols :h) &amp;lt;=&amp;gt; (sel d :rows
1 :cols 2) &amp;lt;=&amp;gt; (sel d 1 2) &amp;lt;=&amp;gt; ($ 1 2 d) &amp;lt;=&amp;gt; ($ 1 :h d)&lt;/p&gt;
&lt;h2 id=&#34;codeold&#34; class=&#34;anchor-header&#34;&gt;codeOLD &lt;a class=&#34;anchor-link&#34; href=&#34;#codeold&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;the ratios function doesn&amp;rsquo;t produce same results as the individual
codings we haven&amp;rsquo;t figured out why or which is really correct (defn
anulysisV2 &amp;quot; analyzes brs and prs price action on nu&lt;/p&gt;
&lt;p&gt;dohlc dataset columns :d date :o open :h high :l low :c close identify
nu using partition map bsr? psr? to hilo and determine how many of each
&amp;quot; [filepath] (let [[dohlc filename pipfactor] (instrument-dohlc
filepath) dohlc (d/select-rows dohlc (range 33)) dohlc-size (nrow dohlc)
;size of dataset less 2 because of header buffer (/ 12.0 pipfactor)
;buffer line calculation in pips for pair part-size 7 ;size of partition
chosen [nseq useq] (nu-finder dohlc)&lt;/p&gt;
&lt;p&gt;+brs? (fn [nu hilo cl &amp;gt;&amp;lt; -+] &amp;ldquo;n: (brs? n hi cl &amp;lt; -) u: (bsr? u lo
cl &amp;gt; &lt;del&gt;)&amp;rdquo; (and (btn? hilo (- nu buffer) (&lt;/del&gt; nu buffer)) (&amp;gt;&amp;lt; cl (-+ nu
buffer)))) prs? (fn [nu cl hilo &amp;gt;&amp;lt; -+] &amp;ldquo;n: (prs? n hi cl &amp;gt; &lt;del&gt;) u:
(prs? u lo cl &amp;lt; -&amp;rdquo; (and (&amp;gt;&amp;lt; hilo (-&lt;/del&gt; nu buffer)) (&amp;gt;&amp;lt; cl nu)))&lt;/p&gt;
&lt;p&gt;ratios (fn [rs nu-seq] (loop [nu nu-seq brs 0 prs 0 i 0] (let [nu0
(first nu-seq) hi ($ i :h dohlc) lo ($ i :l dohlc) cl ($ i :c dohlc)
[is-brs is-prs] (if (= rs &amp;ldquo;r&amp;rdquo;) [(brs? nu0 hi cl &amp;lt; -) (prs? nu0 hi cl
&amp;gt; +)] [(brs? nu0 lo cl &amp;gt; +) (prs? nu0 lo cl &amp;lt; -)]) ] (if (&amp;gt; i (-
dohlc-size part-size)) [brs prs] (cond is-brs (recur nu (inc brs) prs
(inc i)) is-prs (recur (drop 1 nu) brs (inc prs) (inc i)) :else (recur
nu brs prs (inc i))) ))))&lt;/p&gt;
&lt;p&gt;n-ratio (loop [nn nseq brs 0 prs 0 i 0] (let [firstnn (first nn) hi
($ i :h dohlc) cl ($ i :c dohlc)] (if (&amp;gt; i (- dohlc-size part-size))
[brs prs] (cond (brs? firstnn hi cl &amp;lt; -) (recur nn (inc brs) prs (inc
i)) (prs? firstnn hi cl &amp;gt; +) (recur (drop 1 nn) brs (inc prs) (inc i))
:else (recur nn brs prs (inc i))) ))) u-ratio (loop [uu useq brs 0 prs
0 i 0] (let [firstuu (first uu) lo ($ i :l dohlc) cl ($ i :c
dohlc)] (if (&amp;gt; i (- dohlc-size part-size)) [brs prs] (cond (brs?
firstuu lo cl &amp;gt; +) (recur uu (inc brs) prs (inc i)) (prs? firstuu lo cl
&amp;lt; -) (recur (drop 1 uu) brs (inc prs) (inc i)) :else (recur uu brs prs
(inc i))) ))) n-ratio (ratios &amp;ldquo;r&amp;rdquo; nseq) u-ratio (ratios &amp;ldquo;s&amp;rdquo; useq) ]
[n-ratio u-ratio] ))&lt;/p&gt;
&lt;p&gt;while the ideas here are ok we require 20s by not using partitions and
25ms when we do!! however, we need a way to figure out the index&lt;/p&gt;
&lt;p&gt;(defn nu-finderV2 &amp;quot; finds nu give a dohlc dataset returns [[i nn] [i
uu]] &amp;quot; [dohlc] (let [size (nrow dohlc) nu-breadth 7 ;nu width
buf-bars (quot nu-breadth 2) ;number of bars on either side of nu ibeg
buf-bars ;begining bar to look for nu iend (- (nrow dohlc) 1 buf-bars)
;ending bar to look for nu nu? (fn [i hilo maxmin] (= ($ i hilo
dohlc) (apply maxmin ($ (range (- i buf-bars) (+ i buf-bars 1)) hilo
dohlc)))) nus (fn [hilo maxmin] (loop [i ibeg iv []] (if (&amp;gt;= i
iend) iv (if (nu? i hilo maxmin) (recur (+ i buf-bars 1) (conj iv [i
($ i hilo dohlc)])) (recur (inc i) iv)))))] [(nus :h max) (nus :l
min)]))&lt;/p&gt;
&lt;p&gt;(defn anulysisV1 &amp;quot; analyzes brs and prs price action on nu&lt;/p&gt;
&lt;p&gt;dohlc dataset columns :d date :o open :h high :l low :c close identify
nu using partition map bsr? psr? to hilo and determine how many of each
&amp;quot; [filepath] (let [[dohlc filename pipfactor] (instrument-dohlc
filepath) dohlc-size (nrow dohlc) ;size of dataset less 2 because of
header buffer (/ 12.0 pipfactor) ;buffer line calculation in pips for
pair part-size 7 ;size of partition chosen nn (nu-finder ($ :h dohlc)
part-size max) uu (nu-finder ($ :l dohlc) part-size min) in-zone? (fn
[hilo nu] (btn? hilo (- nu buffer) (+ nu buffer)))] (loop [i 4 brs
0] (if (&amp;gt; i (- dohlc-size 9)) brs (recur (inc i) (if (in-zone? ($ i
:h dohlc) (first nn)) (inc brs) brs))) ) [(count nn) (count uu)]))&lt;/p&gt;
&lt;p&gt;(defn mk-dohlc &amp;ldquo;creates the dataset with date, open, high, low, close
from filename&amp;rdquo; [filename] (d/rename-columns (read-dataset filename)
{:col0 :d :col1 :o :col2 :h :col3 :l :col4 :c}))&lt;/p&gt;
&lt;p&gt;(defn nu-finderV1 &amp;quot; finds all nu in a sequence of hilo given a sequence,
the partition size, max|min operator for his|los TODO have option to
remove invalid nu &amp;quot; [aseq part-size maxmin] (let [partitions
(partition part-size 1 aseq) midpt (quot part-size 2) nu (for [p
partitions :when (= (apply maxmin p) (nth p midpt))] (nth p midpt))]
nu))&lt;/p&gt;
&lt;p&gt;(def truefx-filepaths &amp;ldquo;produces a list of truefx path strings&amp;rdquo;
(vectorize (flatten (map (fn [x] (sort (filter #(str/includes? % x)
(map #(.getPath %) (file-seq (clojure.java.io/file &amp;ldquo;/zata/truefx&amp;rdquo;))))))
[&amp;ldquo;1D&amp;rdquo; &amp;ldquo;4H&amp;rdquo; &amp;ldquo;1H&amp;rdquo;]))))&lt;/p&gt;
&lt;p&gt;(defn adjacent-confluence &amp;ldquo;determines oc confluence behavior of adjacent
bars&amp;rdquo; [fp] (let [dohlc (mk-dohlc fp) fn (filename-from-filepath fp)
pf (pip-factor fn) m (to-matrix (ds/remove-columns dohlc [:d])) o (sel
m :cols 0) h (sel m :cols 1) l (sel m :cols 2) c (sel m :cols 3) co (map
pips c o (repeat pf)) pn (map #(pos? (* %1 %2)) co (drop 1 co)) p%
(Math/round (/ (count (filter true? pn)) (float (count pn)) 0.01))]
(printf &amp;ldquo;%s %d %n&amp;rdquo; fn p%) p%))&lt;/p&gt;
&lt;h2 id=&#34;to-solve&#34; class=&#34;anchor-header&#34;&gt;to-solve &lt;a class=&#34;anchor-link&#34; href=&#34;#to-solve&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id=&#34;match-a-key-and-print-component-of-a-map&#34; class=&#34;anchor-header&#34;&gt;match a key and print component of a map &lt;a class=&#34;anchor-link&#34; href=&#34;#match-a-key-and-print-component-of-a-map&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;here is a vector of maps (def asym-parts [{:name &amp;ldquo;head&amp;rdquo; :size 3} {:name
&amp;ldquo;mouth&amp;rdquo; :size 1} {:name &amp;ldquo;nose&amp;rdquo; :size 1} {:name &amp;ldquo;neck&amp;rdquo; :size 2} {:name
&amp;ldquo;left-eye&amp;rdquo; :size 1} {:name &amp;ldquo;left-ear&amp;rdquo; :size 1}to {:name &amp;ldquo;left-shoulder&amp;rdquo;
:size 3}])&lt;/p&gt;
&lt;p&gt;match the :name to be &amp;ldquo;nose&amp;rdquo; and print that item TODO&lt;/p&gt;
&lt;p&gt;an interesting solution to something similar
&lt;a href=&#34;https://stackoverflow.com/questions/18176372/clojure-get-map-key-by-value&#34;&gt;https://stackoverflow.com/questions/18176372/clojure-get-map-key-by-value&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;(-&amp;gt;&amp;gt; {:a &amp;ldquo;bar&amp;rdquo; :b &amp;ldquo;foo&amp;rdquo; :c &amp;ldquo;bar&amp;rdquo; :d &amp;ldquo;baz&amp;rdquo;} ; initial map (group-by
val) ; sorted into a new map based on value of each key (#(get % &amp;ldquo;bar&amp;rdquo;))
; extract the entries that had value &amp;ldquo;bar&amp;rdquo; (map key)) ; get the keys
that had value bar or (map key (#(get % &amp;ldquo;bar&amp;rdquo;) (group-by val {:a &amp;ldquo;bar&amp;rdquo;
:b &amp;ldquo;foo&amp;rdquo; :c &amp;ldquo;bar&amp;rdquo; :d &amp;ldquo;baz&amp;rdquo;})))&lt;/p&gt;
&lt;h3 id=&#34;old-diary-items&#34; class=&#34;anchor-header&#34;&gt;old diary items &lt;a class=&#34;anchor-link&#34; href=&#34;#old-diary-items&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&amp;lt;2020-07-24 Fri&amp;gt; figured out how to install own work to .m2 started
rewrite of algolyze using these ideas &amp;lt;2020-07-23 Thu&amp;gt; went through
clojure style guide got better understanding of ns installed and worked
with hylang - though we should check out cljpython too at some point&lt;/p&gt;
&lt;p&gt;discussion on tech.ml was very promising with both gigasquid and joinr
praising it. so that&amp;rsquo;s what we&amp;rsquo;ll go with for now - convert existing
items to it and look for a visualization mechanism. &amp;lt;2020-07-22 Wed&amp;gt;
got nuen.clj v1 done and testing.&lt;/p&gt;
&lt;p&gt;&amp;lt;2020-07-18 Sat&amp;gt; go thru clojure reader is unsafe post about times
post about project mechanism&lt;/p&gt;
&lt;p&gt;&amp;lt;2020-07-17 Fri&amp;gt; nuen mostly done thx to help on clojurians&lt;/p&gt;
&lt;p&gt;techml read into techml dataset a csv file nearly 3 million lines drop
one column form new column the result of subtracting one column from
another printout head of adjusted dataset&lt;/p&gt;
&lt;p&gt;timings: lein run 62.93s user 0.86s system 123% cpu 51.800 total emacs
repl &amp;ldquo;Elapsed time: 40112.441757 msecs&amp;rdquo; java -jar
target/uberjar/techml-0.1.0-SNAPSHOT-standalone.jar 29.95s user 0.77s
system 162% cpu 18.916 total&lt;/p&gt;
&lt;p&gt;&amp;lt;2020-07-16 Thu&amp;gt; start nuen&lt;/p&gt;
&lt;p&gt;rewrite anulysis for tech.ml rewrite anulysis for arrays&lt;/p&gt;
&lt;p&gt;&amp;lt;2020-07-15 Wed&amp;gt; finish mikera and incanter build a matrix, dataset,
array toolkit (mikera incanter and anything else) plan for clj
cheatsheet explorations -&amp;gt; make own cheatsheet from it and others plan
for java function access&lt;/p&gt;
&lt;p&gt;will conversion to separate arrays be more efficient for subsequent
processing? using arrays instead of incanter datasets may be practical?&lt;/p&gt;
&lt;p&gt;&amp;lt;2020-07-14 Tue&amp;gt; finishing mikera and incanter we should go through
cheatsheet items and understand how the main functions in the categories
work&lt;/p&gt;
&lt;p&gt;&amp;lt;2020-07-13 Mon&amp;gt; last couple of days were spent with julia
programming. though the docs are excellent, emacs doesn&amp;rsquo;t work too well
with it right now. emacs does work well with R. so may be …&lt;/p&gt;
&lt;p&gt;attempt to get python libraries on clojure using






    
    &lt;img src=&#34;libpython-clj&#34; alt=&#34;libpython-clj&#34;&gt;

 - but carin&amp;rsquo;s example
doesn&amp;rsquo;t work completely. anyway, we don&amp;rsquo;t really need to do this now
because what we were interested in seeing was how well anulysis worked
and we can actually do this better in other ways - such as plotting hlc
dots with buffers from nu&lt;/p&gt;
&lt;p&gt;checked out graalvm and that does look very interesting! again, we don&amp;rsquo;t
need it now, but it is definitely something to keep in mind for the
future considering one demo showed 20 performance improvement. it may be
useful even without its polyglot capabilities.&lt;/p&gt;
&lt;p&gt;for now, here&amp;rsquo;s what we focus on:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;learn mikera and incanter&lt;/li&gt;
&lt;li&gt;learn what we can do with direct access to java&lt;/li&gt;
&lt;li&gt;optimize anulysis&lt;/li&gt;
&lt;li&gt;get nuen completed&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;lt;2020-07-10 Fri&amp;gt; got R and candlesticks working - it&amp;rsquo;s pretty good!
main difficulty was that manjaro doesn&amp;rsquo;t autoload make and gcc-fortran&lt;/p&gt;
&lt;p&gt;plotly.clj doesn&amp;rsquo;t seem to have candlesticks plan is to go through
incanter plotting and compare to plotly.clj plotting&lt;/p&gt;
&lt;p&gt;&amp;lt;2020-07-09 Thu&amp;gt; anulysis finish hopefully&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;plan for manual trading&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;examine situation around 12am&lt;/li&gt;
&lt;li&gt;put in suitable entry limit or stop trades with sltp&lt;/li&gt;
&lt;li&gt;try to exit trade around 12pm next day&lt;/li&gt;
&lt;li&gt;close orders and start at 1 again&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&amp;lt;2020-07-08 Wed&amp;gt; &lt;a href=&#34;https://docs.cider.mx/cider/debugging/debugger.html&#34;&gt;cider site
debugging&lt;/a&gt; &lt;a href=&#34;https://endlessparentheses.com/cider-debug-a-visual-interactive-debugger-for-clojure.html&#34;&gt;cider
debugging
tools&lt;/a&gt;
&lt;a href=&#34;https://stackoverflow.com/questions/2352020/debugging-in-clojure&#34;&gt;debugging in
clojure&lt;/a&gt;
several items not quite understood but we now have a useable debugging
mechanism&lt;/p&gt;
&lt;p&gt;more learnt about loop-recur in that the main if statement can have
various forms (eg let) in true or false. this knowledge enabled the best
version to-date: (fn [rs nu-seq] (loop [nu nu-seq brs 0 prs 0 i 0]
(if (or (&amp;gt; i (- dohlc-size part-size)) (empty? nu)) [brs prs] (let
[nu0 (first nu-seq) hi ($ i :h dohlc) lo ($ i :l dohlc) cl ($ i :c
dohlc) [is-brs is-prs] (if (= rs &amp;ldquo;r&amp;rdquo;) [(brs? nu0 hi cl &amp;lt; -) (prs?
nu0 hi cl &amp;gt; +)] [(brs? nu0 lo cl &amp;gt; +) (prs? nu0 lo cl &amp;lt; -)]) ]
(cond is-brs (recur nu (inc brs) prs (inc i)) is-prs (recur (drop 1 nu)
brs (inc prs) (inc i)) :else (recur nu brs prs (inc i)))))))&lt;/p&gt;
&lt;p&gt;&amp;lt;2020-07-07 Tue&amp;gt; getting nu the partition mechanism provides far
faster results than iterating over groups of 7 bars - even if you skip
bars regularly because after a nu the latter three can never be a nu.
however, the partitions don&amp;rsquo;t provide anyway of keeping track of the
index. a problem can develop in that as we go through nu we could be
counting brs even before the occurence of the nu!&lt;/p&gt;
&lt;p&gt;so here are 2 ideas: figure out the index of the nu through a loop-recur
setup. something like loop ds to find index conj
index+accumulatedindices to nu drop index+1 ds&lt;/p&gt;
&lt;p&gt;similar idea, but we don&amp;rsquo;t need to actually put the index anywhere. find
index of nu drop to index+1 start to check for brs once prs drop current
nu do over again this way we only start checking for brs after we find
where the nu is&lt;/p&gt;
&lt;p&gt;&amp;lt;2020-07-06 Mon&amp;gt; figured out how to use loop-recur better - it is a
likeable combo and seems preferable to me than recursion now. got a good
version of nu-finder done which includes index amongst other things and
can be used outside anulysis. &amp;lt;2020-07-05 Sun&amp;gt; setup nu-orders.clj for
populating nu with orders &amp;lt;2020-07-04 Sat&amp;gt; finish anulysis
&amp;lt;2020-07-03 Fri&amp;gt; go through google hits example&lt;/p&gt;
&lt;p&gt;&amp;lt;2020-07-02 Thu&amp;gt; determine whether to use core.matrix or incanter for
most things incanter is being incorporated within core.matrix and it is
not really developed much. so we&amp;rsquo;ll make the switch and start looking at
some of the other data science libraries.&lt;/p&gt;
&lt;p&gt;discovered core.matrix creator mike anderson or mikera who has good
youtube videos on the topic&lt;/p&gt;
&lt;p&gt;seems as though core.matrix (most operations) and incanter (rw graphics
etc) can work well together.&lt;/p&gt;
&lt;p&gt;&amp;lt;2020-07-01 Wed&amp;gt; issues with datasets and matrices using map and apply
figured out a lot about for loop &amp;lt;2020-06-30 Tue&amp;gt; dilemmas with
figuring out how to work hilo with nus &amp;lt;2020-06-29 Mon&amp;gt; figuring out a
more iterative anulysis &amp;lt;2020-06-28 Sun&amp;gt; work on sicp - understanding
cond and if &amp;lt;2020-06-27 Sat&amp;gt; started sicp and
INDUCTIVESYNTHESISOFFUNCTIONALPROGRAMS&lt;/p&gt;
&lt;p&gt;&amp;lt;2020-06-26 Fri&amp;gt; figure out mechanism to compare hilo to stacked nu
problem is that i keep wanting to put things into boxes rather than
thinking functionally.&lt;/p&gt;
&lt;p&gt;&amp;lt;2020-06-25 Thu&amp;gt; work on anulysis using stacks and proper influence.&lt;/p&gt;
&lt;p&gt;(def d (ds/select-rows ds (range 9))) (ds/add-column d :sums (mt/add
(sel d :cols :o) (sel d :cols :h))) (ds/add-column d :sums (mt/gt (sel d
:cols :c) 83)) (ds/add-column d :sums (mt/mul (sel d :cols :c) (mt/gt
(sel d :cols :c) 83))) ;crude&lt;/p&gt;
&lt;p&gt;&amp;lt;2020-06-24 Wed&amp;gt; creating bounsr and penesr functions within let got
involved with creating pairs&lt;/p&gt;
&lt;p&gt;though there are some nice ideas in V1 of anulysis the overall attempt
to have nu checked over the entire matrix is meaningless and produced
absurdly high numbers - eg almost 8000 bounsr for nrow = 2248. so we
need to restrict the nu influence to forward items only and have them
flip after first penesr and disappear after a second penesr.&lt;/p&gt;
&lt;p&gt;(defn anulysisV1 &amp;ldquo;analyzes pa near nu&amp;rdquo; [fp] (let [[ops his los cls
fnm pf] (instrument-info fp) buffer (/ 12 pf) bounsr? (fn [nus hilos
cls &amp;gt;&amp;lt; -+] (count (remove nil? (for [nu nus [hilo cl] (zip hilos
cls)] (let [nu-buffer (-+ nu buffer)] (if (and (btn? hilo [nu
nu-buffer]) (&amp;gt;&amp;lt; nu-buffer cl)) true)))))) bpsr? (fn [nus hilos ops
cls &amp;gt;&amp;lt; -+] (for [nu nus [hilo op cl] (zip hilos ops cls)] (let
[b-buffer (-+ nu buffer) p-buffer (-+ nu (- buffer))] (cond (and (btn?
hilo [nu b-buffer]) (&amp;gt;&amp;lt; b-buffer cl)) :bounsr (and (btn? nu [op
cl]) ) :penesr)))) part-size 5 midpt (quot part-size 2) hi-partition
(partition part-size 1 his) lo-partition (partition part-size 1 los) nn
(remove nil? (map #(nu-finder % max midpt) hi-partition)) uu (remove
nil? (map #(nu-finder % min midpt) lo-partition)) boun-s (bounsr? uu
los cls &amp;lt; +) boun-r (bounsr? nn his cls &amp;gt; -)&lt;/p&gt;
&lt;p&gt;isbounsr #(= :bounsr %) ispenesr #(= :penesr %) bpu (bpsr? uu los ops
cls &amp;lt; +) bpn (bpsr? nn his ops cls &amp;gt; -) ] [fnm boun-s boun-r (count
(filter isbounsr bpu)) (count (filter isbounsr bpn)) (count (filter
ispenesr bpu)) (count (filter ispenesr bpn))]))&lt;/p&gt;
&lt;p&gt;(map anulysis (take 1 truefx-filepaths)) =&amp;gt; ([&amp;ldquo;audjpy1D.csv&amp;rdquo; 3829
3607]) =&amp;gt; ([&amp;ldquo;audjpy1D.csv&amp;rdquo; 4167 4035])&lt;/p&gt;
&lt;p&gt;&amp;lt;2020-06-23 Tue&amp;gt; coined term lalwal lose a little win a lot rewrote
outliers in truefx files - all were with the lows. some involving CHF
may have been legitimate. anulysis almost done after figuring out that
:while is not to be used with for - not sure what it is&lt;/p&gt;
&lt;p&gt;&amp;lt;2020-06-22 Mon&amp;gt; started anulysis&lt;/p&gt;
&lt;p&gt;&amp;lt;2020-06-21 Sun&amp;gt; get barchar working first idea of adjacent-confluence
may work in reverse for shorter tf&lt;/p&gt;
&lt;p&gt;started snippets in this file&lt;/p&gt;
&lt;p&gt;made neat ns discovry - whatever is in core.clj including def/defn
becomes available to every other file provided the namespace isn&amp;rsquo;t
changed! this really means that we can load up core.clj with whatever is
required rather than import everything for every related program we
create!&lt;/p&gt;
&lt;p&gt;&amp;lt;2020-06-20 Sat&amp;gt; working with dataset functions add-column,
reorder-column, remove-column wrote sel-col function which is useful to
work with single column in dataset&lt;/p&gt;
&lt;p&gt;discovered that sel on a dataset is very slow compared to sel on a
matrix it seems to be far, far faster to convert a dataset to a matrix
to do things and then convert it back if you want to utilize the variety
of types a dataset offers. (see xpts in datmat.clj)&lt;/p&gt;
&lt;p&gt;&amp;lt;2020-06-19 Fri&amp;gt; investigating various things all week without entry
into diary many of clojure.core.matrix is replacing the incanter
functions: see updates to incanter 2.0
&lt;a href=&#34;https://github.com/incanter/incanter/wiki/Incanter-2.0-change-log&#34;&gt;https://github.com/incanter/incanter/wiki/Incanter-2.0-change-log&lt;/a&gt; so
we investigate these in datmat.clj&lt;/p&gt;
&lt;p&gt;&amp;lt;2020-06-11 Thu&amp;gt; get-orders-for done rearrange the ztut which was
getting awkward as far as ns goes as well as other things. set it all up
on gitlab&lt;/p&gt;
&lt;p&gt;changing to ns works with C-c M-n after we C-c C-k the buffer. for some
reason, (in-ns namespace) doesn&amp;rsquo;t always work. &lt;a href=&#34;http://jr0cket.co.uk/2015/01/getting-started-with-cider-repl-for-clojure-on-emacs-live.html&#34;&gt;this
page&lt;/a&gt;
is useful as may be other things on that site.&lt;/p&gt;
&lt;p&gt;&amp;lt;2020-06-10 Wed&amp;gt; incanter things work nicely so far, but we need to
become far more knowledgeable working with datasets, functions (what
they do) and plotting.&lt;/p&gt;
&lt;p&gt;also, the how i start thing is a bit confusing as carin jumps to things
that we&amp;rsquo;re not familiar with so we&amp;rsquo;ll get back to that later.&lt;/p&gt;
&lt;p&gt;&amp;lt;2020-06-09 Tue&amp;gt; incanter:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;work through &lt;a href=&#34;https://data-sorcery.org/contents/&#34;&gt;data sorcery&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;cheatsheet use regularly to recall syntax and concepts&lt;/li&gt;
&lt;li&gt;make use of api documentation throughout&lt;/li&gt;
&lt;li&gt;namespace switching solved: repl takes main ns, but can switch with
(in-ns &amp;lsquo;whatever) so long as it is seen&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;started &lt;a href=&#34;https://howistart.org/posts/clojure/1/&#34;&gt;How I Start&lt;/a&gt; which
should be useful for namespace understanding and testing&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;lt;2020-06-08 Mon&amp;gt; incanter:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;work through &lt;a href=&#34;https://hub.packtpub.com/working-incanter-datasets/&#34;&gt;ch6 Working with Incanter
Datasets&lt;/a&gt; from
Clojure Data Analysis Cookbook which was helpful though the datasets
used were huge and therefore difficult to examine in some situations&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;lt;2020-06-07 Sun&amp;gt; installed
&lt;a href=&#34;https://github.com/hyPiRion/inlein/releases/tag/0.2.0&#34;&gt;inlein&lt;/a&gt; started
thinking bayes&lt;/p&gt;
&lt;p&gt;&amp;lt;2020-06-06 Sat&amp;gt; transferred from github to gitlab which seems to be
smoother and cleaner. cleaned up tutorials into ztut folder cleaned up
clj bookmarks went through excellent birdseye view of clj &lt;a href=&#34;http://www.unexpected-vortices.com/clojure/brief-beginners-guide/toc.html&#34;&gt;A Brief
Beginner&amp;rsquo;s Guide To
Clojure&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;2020-06-05 Fri&amp;gt; more cider it seems that form order is important
because loading the buffer when dependencies don&amp;rsquo;t come first makes eval
impossible. cider has a lot of functions, but we need to figure out
which ones we&amp;rsquo;ll actually use successfully connected to an existing repl
at localhost after getting port using: connection info C-c M-d&lt;/p&gt;
&lt;p&gt;paredit:&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;&lt;/th&gt;
          &lt;th&gt;&lt;/th&gt;
          &lt;th&gt;&lt;/th&gt;
          &lt;th&gt;&lt;/th&gt;
          &lt;th&gt;&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;M-( M-&amp;quot;&lt;/td&gt;
          &lt;td&gt;M-s M-?&lt;/td&gt;
          &lt;td&gt;C-right C-left&lt;/td&gt;
          &lt;td&gt;M-S M-J&lt;/td&gt;
          &lt;td&gt;C-M-f C-M-b&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;cider:&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;&lt;/th&gt;
          &lt;th&gt;&lt;/th&gt;
          &lt;th&gt;&lt;/th&gt;
          &lt;th&gt;&lt;/th&gt;
          &lt;th&gt;&lt;/th&gt;
          &lt;th&gt;&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;C-c C-z&lt;/td&gt;
          &lt;td&gt;C-c M-j&lt;/td&gt;
          &lt;td&gt;C-c C-c&lt;/td&gt;
          &lt;td&gt;C-c C-k&lt;/td&gt;
          &lt;td&gt;C-up C-down&lt;/td&gt;
          &lt;td&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;lt;2020-06-04 Thu&amp;gt; got all of oanda ide to date as far as we had python
going order fn greatly simplified - we never needed to use if-let&lt;/p&gt;
&lt;p&gt;investigated cider further watched alchy bozbat&lt;/p&gt;
&lt;p&gt;&amp;lt;2020-06-03 Wed&amp;gt; stuck on json not being parsed but that was because
clojure follows the curl more closely using :body instead of :json
whereas python didn&amp;rsquo;t&lt;/p&gt;
&lt;p&gt;&amp;lt;2020-06-02 Tue&amp;gt; get api functions and sring theory to where we were
with python all api done as far as python progress except for the json
issue&lt;/p&gt;
&lt;p&gt;hobbit problem using reduce is neatest&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=RVmY2lQ4DHE&#34;&gt;excellent video with edmund
jackson&lt;/a&gt; data science and
clojure shows the landscape in 2012 and what options there were then
probably worth following up on this.&lt;/p&gt;
&lt;p&gt;&amp;lt;2020-06-01 Mon&amp;gt; understood the hobbit setup mostly in brave it is
messy using loop, but much messier other ways&lt;/p&gt;
&lt;p&gt;&amp;lt;2020-05-31 Sun&amp;gt; set up tut structures in clojure directory set up
problems to solve file in to-solve.clj file&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://8thlight.com/blog/colin-jones/2010/12/05/clojure-libs-and-namespaces-require-use-import-and-ns.html&#34;&gt;Clojure Libs and Namespaces: require, use, import and
ns&lt;/a&gt;
(require &amp;lsquo;clojure.string &amp;lsquo;clojure.test) (require &amp;lsquo;[clojure.string :as
string]) to avoid (require [&amp;lsquo;clojure.string :as &amp;lsquo;string]) (require
&amp;lsquo;clojure.string &amp;lsquo;[clojure.test :as test]) (require &amp;lsquo;(clojure string
test)) (require &amp;lsquo;(clojure [string :as string] test))&lt;/p&gt;
&lt;p&gt;consider the incanter lib issue (use &amp;lsquo;(incanter core stats charts io))
works right away and we can call view, histogram etc (require &amp;lsquo;(incanter
core stats charts io)) doesn&amp;rsquo;t seem to work at all, but that&amp;rsquo;s due to ns
issues: (incanter.core/view (incanter.charts/histogram
(incanter.stats/sample-normal 1000))) is just fine&lt;/p&gt;
&lt;p&gt;also see &lt;a href=&#34;http://clojure-doc.org/articles/language/namespaces.html&#34;&gt;Clojure Namespaces and
Vars&lt;/a&gt; for
better ways as well as this
&lt;a href=&#34;https://stackoverflow.com/questions/22599712/incanter-dependency/22600355#22600355&#34;&gt;answer&lt;/a&gt;
from stackoverflow. we can solve this with (ns tut-incanter.core
(:require (incanter [core :refer :all] [stats :refer :all] [charts
:refer :all]))) though (use &amp;lsquo;(incanter core stats charts)) seems much
simpler&lt;/p&gt;
&lt;p&gt;both api requests with clj-http and json readability accomplished next
step is to get functions to work&lt;/p&gt;
&lt;p&gt;&amp;lt;2020-05-30 Sat&amp;gt; figuring out git mostly getting through brave ch3
except last exercise&lt;/p&gt;
&lt;p&gt;&amp;lt;2020-05-29 Fri&amp;gt; started clojure for brave updated several youtube
resources&lt;/p&gt;
&lt;p&gt;&amp;lt;2020-05-28 Thu&amp;gt; finished cds introduction&lt;/p&gt;
&lt;p&gt;&amp;lt;2020-05-27 Wed&amp;gt; halfway through cds introduction why clojure video by
vijay is useful&lt;/p&gt;
&lt;p&gt;&amp;lt;2020-05-26 Tue&amp;gt; continued with cds set up resources and videos
watched russ olsen &lt;a href=&#34;https://www.youtube.com/watch?v=0if71HOyVjY&#34;&gt;functional programming in 40
min&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;2020-05-25 Mon&amp;gt; set up emacs for clojure watched rick hickey video on
creating it got cider and lein working started cds tutorial&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Emacs</title>
      <link>http://towardsfreedom.com/ithngys/services/website-design-hosting/tfold/tfzen/iknotes/computing/emacs/</link>
      <pubDate>Thu, 16 Jun 2022 12:40:30 -0700</pubDate>
      <guid>http://towardsfreedom.com/ithngys/services/website-design-hosting/tfold/tfzen/iknotes/computing/emacs/</guid>
      <description>&lt;p&gt;We belong to the &lt;a href=&#34;https://www.gnu.org/software/emacs/&#34;&gt;church of emacs&lt;/a&gt;
which we feel is the ultimate editor!&lt;/p&gt;
&lt;h1 id=&#34;keybindings&#34; class=&#34;anchor-header&#34;&gt;keybindings &lt;a class=&#34;anchor-link&#34; href=&#34;#keybindings&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id=&#34;assistance&#34; class=&#34;anchor-header&#34;&gt;assistance &lt;a class=&#34;anchor-link&#34; href=&#34;#assistance&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;The emacs help
&lt;a href=&#34;https://www.gnu.org/software/emacs/manual/html_node/emacs/Help.html&#34;&gt;manual&lt;/a&gt;
and
&lt;a href=&#34;https://www.gnu.org/software/emacs/manual/html_node/emacs/Help-Summary.html&#34;&gt;help summary&lt;/a&gt;
TODO lots to check out here&lt;/li&gt;
&lt;li&gt;Gateway to finding anything on emacs is C-h ?&lt;/li&gt;
&lt;li&gt;Regexps can be used as lists of words which are ANDed.&lt;/li&gt;
&lt;li&gt;Some prefix followed by C-h give list of bindings for prefix.&lt;/li&gt;
&lt;/ul&gt;
&lt;!-- --&gt;
&lt;pre&gt;&lt;code&gt;;; quick help
C-h C-q

;; apropos
M-x apropos Display all symbols matching a pattern
M-X Display all commands possible for buffer
C-h a Search only commands (apropos-command)
C-h d Search docs (apropos-documentation)
M-x apropos-library Useful for new mode or package
M-x apropos-value Useful if you know value not variable

;; describes
C-h m Mode major/minor, keybindings (describe-mode)
C-h x Commands (describe-command)
C-h f Functions (describe-function)
C-h v Variable (describe-variable)
C-h k Key detail (describe-key)
C-h c Key brief (describe-key-briefly)

All describe buffers have shortcut keys i (info), s (source), c (customize).

;; info
C-h i Open info manual
C-h i d m &amp;lt;item&amp;gt; RET i &amp;lt;topic&amp;gt; RET Indices search
C-h i d m &amp;lt;item&amp;gt; RET s &amp;lt;topic&amp;gt; RET Regexp search
C-h r m &amp;lt;topic&amp;gt; Direct way to emacs info
M-x info-apropos searches for item in all info
M-x info-display-manual get manual by name (or tab for list)
M-x info-finder uses list of keywords to find things

;; various
C-h p Packages list
C-h e Messages buffer
C-h o Symbol docs at point or type it
C-h s Current syntax table !!!

M-x manual-entry RET manpage Get a manpage
&amp;lt;prefix&amp;gt; C-h all prefix possibilities
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&#34;bookmarks&#34; class=&#34;anchor-header&#34;&gt;bookmarks &lt;a class=&#34;anchor-link&#34; href=&#34;#bookmarks&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;C-x r m set bookmark
C-x r b jump to bookmark
C-x r l list bookmarks
M-x bookmark-delete
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&#34;buffers&#34; class=&#34;anchor-header&#34;&gt;buffers &lt;a class=&#34;anchor-link&#34; href=&#34;#buffers&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;C-x b helm-buffers
C-x C-b helm-multi-files
C-x M-b ibuffer
C-x k kill buffer
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&#34;case&#34; class=&#34;anchor-header&#34;&gt;case &lt;a class=&#34;anchor-link&#34; href=&#34;#case&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;M-c Word capitalize
M-u Word ucase
M-d Word dcase
C-x C-u Region ucase
C-x C-l Region lcase
M-x upcase-initials-region Which is strange for most situations.
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&#34;comment&#34; class=&#34;anchor-header&#34;&gt;comment &lt;a class=&#34;anchor-link&#34; href=&#34;#comment&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;M-; Comment single/double/region/uncomment
C-x C-; Double comment (lisp)/uncomment
M-x comment-box
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Various variables can be customized as well to suit requirements.&lt;/p&gt;
&lt;h2 id=&#34;count&#34; class=&#34;anchor-header&#34;&gt;count &lt;a class=&#34;anchor-link&#34; href=&#34;#count&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;M-= Words (buffer or region)
M-x count-lines-region
M-x count-matches
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&#34;dired&#34; class=&#34;anchor-header&#34;&gt;dired &lt;a class=&#34;anchor-link&#34; href=&#34;#dired&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Only most useful bindings here. (See dired section for more)&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;;; commands on files
! Any command on a file
! cmd * &amp;gt; newfile will have output of cmd on * (cursor file)

;; compare files
=  goto file, =, enter other file (figure out how diff works !!!)

;; enter a dir
C-x (4|5) d ~/ new window|frame
C-x d ~/*|.*|D* all|hidden|starting with D files

;; markings
m mark
d mark for deletion
t toggle marks
u,U unmark
M-del unmark all
%d regexp for deletion
~|# bkp|auto-save for deletion
%m regexp flag
%g regexp contained in files
*s|/|.|@ mark all|dirs|ext|sym

;; move
j move to file
(M-)C-s (regexp)search
M-{|} up|down to marked
^ move to parent dir
&amp;lt;|&amp;gt; move to prev|next dir

;; specific commands on marked items
C|D|P|R copy|delete|print|rename
G|M|O dired-do-chgrp|chmod|chown
A|Q regexp search|query replace
!|&amp;amp; shell command on files sync|async
%u|l upper|lower
S|Y|H links sym|relsym|hard

;; subdirs
i insert subdir
C-u k remove subdir
$ fold subdir
M-$ fold all dirs
C-M p|n go to prev|next subdir
C-M-d go to first child subdir


;; view directory
C-u s change ls flags
i put cursor dirs into same buffer

;; visit
e|f same window find
o other window find (C-o don&#39;t move there)
v read only
^ parent dir
a descend discarding parent  
W guess default application

;; zzmisc
h help
? prompt for choice delete,copy,find ...
B|L byte-compile|load elisp files

k dired-do-kill-lines don&#39;t delete !!!
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&#34;greps&#34; class=&#34;anchor-header&#34;&gt;greps &lt;a class=&#34;anchor-link&#34; href=&#34;#greps&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;;; rg
C-c s gives menu to do various greps

;; helm ag
M-g s helm-do-grep-ag (alt to C-s)

;; grep
M-x grep Prompts for item and files
M-x grep-find Uses find and -exec grep
M-x lgrep Prompt through each step
M-x rgrep Recursive search
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&#34;helm&#34; class=&#34;anchor-header&#34;&gt;helm &lt;a class=&#34;anchor-link&#34; href=&#34;#helm&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;C-x c (prefix) C-g (exit usually)&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;;; helmed key bindings
M-x helm-M-x
M-y helm-show-kill-ring
M-s o helm-occur
C-x C-f helm-find-files
C-x C-b helm-multi-files (use to switch buffers)
C-spc mark buffers
M-D delete marked buffers
C-c g helm-google-suggest
M-g f helm-do-grep-ag (alt to C-s)

;; helm prefixed
/ helm-find files recursively from pwd
@ helm-list-elisp-packages
f helm-multi-files buffers,recent,bookmarks,pwd (C-x C-b)
l helm-locate locate through helm
r helm-regexp build regexp for find in file

;; help indices
h g helm-info-gnus
h h helm-documentation
h i helm-info-at-point
h r helm-info-emacs
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&#34;filling&#34; class=&#34;anchor-header&#34;&gt;filling &lt;a class=&#34;anchor-link&#34; href=&#34;#filling&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;M-p Fill paragraph
C-u M-q Fill and justify
C-x f Set fill width
C-x . Set fill prefix (for each fill line)
M-x auto-fill-mode (likely best for text production)
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&#34;insert&#34; class=&#34;anchor-header&#34;&gt;insert &lt;a class=&#34;anchor-link&#34; href=&#34;#insert&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;C-x i Insert file
C-x x i Insert buffer (since all buffers aren&#39;t files)
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&#34;kill&#34; class=&#34;anchor-header&#34;&gt;kill &lt;a class=&#34;anchor-link&#34; href=&#34;#kill&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;M-d Word forward from point
C-&amp;lt;back&amp;gt; Word backward from point
C-k To end of line
C-S-k To beg of line
M-k Rest of paragraph
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;M-y TAB will show kill ring in buffer for yank.&lt;/p&gt;
&lt;h2 id=&#34;macro&#34; class=&#34;anchor-header&#34;&gt;macro &lt;a class=&#34;anchor-link&#34; href=&#34;#macro&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;F3 record beg
C-u F3 record beg and append to last
F4 record end | play last
C-u F4 play 2nd
M-&amp;lt;N&amp;gt; F4 play last N times

C-x C-k n names last
C-x C-k b binds last to key
M-x insert-kbd-macro pastes into buffer
C-x C-k e edits last
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&#34;mark&#34; class=&#34;anchor-header&#34;&gt;mark &lt;a class=&#34;anchor-link&#34; href=&#34;#mark&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;M-@ Word (M-- backward)
M-h Paragraph (M-- backward)
C-x h Entire buffer
C-x C-p Next page

in ibuffer
% n - Mark buffers by their name, using a regexp.
% m - Mark buffers by their major mode, using a regexp.
% f - Mark buffers by their filename, using a regexp.
% g - Mark buffers by their content, using a regexp.
% L - Mark all locked buffers.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Often unnecessary, except copying region or kill/copy weird shaped
regions.&lt;/p&gt;
&lt;h2 id=&#34;move&#34; class=&#34;anchor-header&#34;&gt;move &lt;a class=&#34;anchor-link&#34; href=&#34;#move&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;;; smaller movements
M-m Line beg (regardless of indent)
C-a Line beg
C-e Line end
M-a Sentence beg
M-e Sentence End
M-down Pargraph next beg
M-up Paragraph next end

;; larger movements
M-i Use imenu
M-r Cycle position point bot-mid-top
C-l Cycle center point to bot-mid-top
M-g M-g go to line number

;; sexp movements!!!
C-M-d Down into list
C-M-u Up out of list
C-M-n Forward to next list
C-M-p Backward to prev list
C-M-h Next defun
C-M-@ Next sexp
C-M-f Forward by sexp
C-M-b Backward by sexp
C-M-a Descend into sexp
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&#34;negate&#34; class=&#34;anchor-header&#34;&gt;negate &lt;a class=&#34;anchor-link&#34; href=&#34;#negate&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;C--
M--
C-M-

M-- M-d kills word before point
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&#34;searchreplace&#34; class=&#34;anchor-header&#34;&gt;search/replace &lt;a class=&#34;anchor-link&#34; href=&#34;#searchreplace&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;C-s|r Use isearch forward|reverse
C-M-s|r Use isearch regexp
M-% Query search options
C-M-% Query regexp options
M-s Replace string
M-r Replace regexp
!!! c|r|w|_|&#39;|SPC Toggle various modes!!!
!!! C-w Add word at point to search (??!!!)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Note case folding effect. Regexps are fine for simple search/replace,
but for heavy-duty stuff emacs/elisp is likely not the best option. So,
we should use perl or clojure from the outside.&lt;/p&gt;
&lt;h2 id=&#34;tab-bar-mode&#34; class=&#34;anchor-header&#34;&gt;tab bar mode &lt;a class=&#34;anchor-link&#34; href=&#34;#tab-bar-mode&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;C-x t 2 create a new tab
C-x t 0 close current tab
C-x t RET Select tab by name 
C-x t o Next Tab (C-&amp;lt;tab&amp;gt;)
C-S-&amp;lt;tab&amp;gt; Previous Tab 
C-x t r Rename Tab 
C-x t m Move tab one position to right 
C-x t p ... Run project command in other tab 
C-x t t Execute command in other tab 
C-x t 1 Close all other tabs 
C-x t C-f Find file in other tab 
C-x t b Switch to buffer in other tab 
C-x t d Open Dired in other tab
M-x tab-list Shows an interactive tab list 
M-x tab-undo Undoes a closed tab for each invocation 
M-x tab-recent Switch to the last visited tab
M-x tab-bar-history-mode
M-x global-tab-line-mode
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&#34;text-manipulation&#34; class=&#34;anchor-header&#34;&gt;text manipulation &lt;a class=&#34;anchor-link&#34; href=&#34;#text-manipulation&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;;; duplicates in region
M-x delete-duplicate-lines With 3 C-u options

;; keep, flush, copy in region by regexp
M-x flush-lines
M-x keep-lines
M-x copy-matching-lines
M-x kill-matching-lines

;; kill
C-k kill to end of line
C-; kill to beg of line

;; occur
M-x occur Choose e option to edit

;; join and split lines
C-o Inserts blank line after point with possible split
C-M-o Splits line at point keeping indent
C-x C-o Deletes all blank lines after point
M-^ Joins with line above

;; whitespace
M-SPC Cycle spacing instead of just-one-space
M-\ Deletes whitespace around point
M-x delete-trailing-whitespace
M-x whitespace-report(-region)
M-x whitespace-cleanup(-region)
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&#34;transpose&#34; class=&#34;anchor-header&#34;&gt;transpose &lt;a class=&#34;anchor-link&#34; href=&#34;#transpose&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;C-t Characters
M-t Words
C-x C-t Lines
C-M-t Sexps
M-x transpose-paragraphs
M-x transpose-sentences
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&#34;undoredo&#34; class=&#34;anchor-header&#34;&gt;undo/redo &lt;a class=&#34;anchor-link&#34; href=&#34;#undoredo&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;C-/ Undo
C-? Redo
C-x u Undo-tree-mode if activated !!!
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&#34;view-interfaces&#34; class=&#34;anchor-header&#34;&gt;view interfaces &lt;a class=&#34;anchor-link&#34; href=&#34;#view-interfaces&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;;; buffer view
C-x M-b View buffers (use ibuffer)

;; other buffer use
C-x 4 C-f Find file
C-x 4 C-o Open other buffer
C-x 4 d Dired
C-x 4 b Choose and activate other buffer
C-x 4 0 Kills buffer and window
C-x 4 p Project command !!!

;; window use
C-x 0..3 Delete and split windows
C-x o Switch active window (mapped to M-o)
C-x left|right Cycles buffers
C-c left|right Goes to other configurations with winner-mode

;; other frame use !!!
C-x 5 2 New frame
C-x 5 0 Delete active frame
C-x 5 1 Delete other frames
C-x 5 C-f Find file
C-x 5 d Dired
C-x 5 o Buffer in other frame
C-x 5 p Project in other frame
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&#34;visit&#34; class=&#34;anchor-header&#34;&gt;visit &lt;a class=&#34;anchor-link&#34; href=&#34;#visit&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;C-x C-f visit file
C-x C-f C-f visit new buffer (no ido)
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&#34;windows&#34; class=&#34;anchor-header&#34;&gt;windows &lt;a class=&#34;anchor-link&#34; href=&#34;#windows&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;C-x 0 deletes active window
C-x 1 deletes other windows (f12 and C-f12)
C-x 2 split window below
C-x 3 split window right
C-x o switch to other window (M-o)
M-x winner-mode remembers window settings
C-x 4 &amp;lt;keys&amp;gt; does things in other window
C-x 5 &amp;lt;keys&amp;gt; frame management
&lt;/code&gt;&lt;/pre&gt;
&lt;h1 id=&#34;auto-capitalize-mode&#34; class=&#34;anchor-header&#34;&gt;auto-capitalize-mode &lt;a class=&#34;anchor-link&#34; href=&#34;#auto-capitalize-mode&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;cl is deprecated, use cl-lib in the autocapitalize.el file&lt;/p&gt;
&lt;h1 id=&#34;calc&#34; class=&#34;anchor-header&#34;&gt;calc &lt;a class=&#34;anchor-link&#34; href=&#34;#calc&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;Start C-x * c; Quick C-x * q&lt;/li&gt;
&lt;li&gt;Quit C-x * x | q&lt;/li&gt;
&lt;li&gt;Getting Started &amp;lsquo;h i&amp;rsquo;&lt;/li&gt;
&lt;li&gt;Tutorial &amp;lsquo;h t&amp;rsquo;&lt;/li&gt;
&lt;li&gt;Reference &amp;lsquo;h s&amp;rsquo;; C-x * s&lt;/li&gt;
&lt;li&gt;Key, Function, Variable ‘h k’, ‘h f’, ‘h v’&lt;/li&gt;
&lt;li&gt;Demo Calc has something for everyone! Many of the functions are with
capital letters such as Q sqrt, I inverse, S sine. Keypad mode C-x *
k brings up a pad that works with mouse. Grabber C-x * g|r into
vector|matrix. Undo U. To transpose use v t, Convert units &amp;rsquo; 43 mi/hr
with u c new units. Date arithmetic t N, 7 +- Algebraic eqn (entered
with &amp;rsquo; [2x+5=11]) solving requires &amp;lsquo;a S&amp;rsquo; then variables to solve
for. Help with h k|f whatever and l to get back. To remove, press
&amp;lt;DEL&amp;gt; and to exit q.&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&#34;codeium-crane&#34; class=&#34;anchor-header&#34;&gt;codeium crane &lt;a class=&#34;anchor-link&#34; href=&#34;#codeium-crane&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;[This aibot just does not work well yet 250518. It is nice to some extent for working in emacs, but the website seems unable to produce correct code in some situations and has on occasion gone into a repeat loop. There seem to be some neat things coming up like Windsurf, but I&amp;rsquo;m not sure of what use that will be for emacs.]&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://codeium.com&#34;&gt;Codeium&lt;/a&gt; is a free AI software that offers
developers code completion, chat, and search capabilities in over 70
languages across 40+ integrated IDEs. We set up
&lt;a href=&#34;https://github.com/Exafunction/codeium.el&#34;&gt;codeium.el&lt;/a&gt; for Emacs with
&lt;a href=&#34;https://github.com/minad/corfu&#34;&gt;corfu.el&lt;/a&gt; (a completer frontend),
&lt;a href=&#34;https://github.com/minad/cape&#34;&gt;cape.el&lt;/a&gt; (which provides useful
functions for completion), and
&lt;a href=&#34;https://github.com/joaotavora/eglot&#34;&gt;eglot&lt;/a&gt; (the emacs client for
language server protocol). The code is modified from the very helpful
&lt;a href=&#34;https://github.com/Exafunction/codeium.el/issues/82#issuecomment-1932467412&#34;&gt;jeff-phil
setup&lt;/a&gt;
and much of the annotation is provided by &lt;a href=&#34;https://www.perplexity.ai&#34;&gt;Perplexity
AI&lt;/a&gt; (though edited).&lt;/p&gt;
&lt;p&gt;While there is considerable and grateful plagerization from various
sources, some of the code has been re-written for my own purposes.&lt;/p&gt;
&lt;p&gt;The init-codeium.el page begins with the following requires, before
getting into the actual code:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-elisp&#34; data-lang=&#34;elisp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;require&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;codeium&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;require&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;corfu&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;require&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;cape&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;require&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;eglot&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;idealings-with-codeium&#34; class=&#34;anchor-header&#34;&gt;Idealings with codeium &lt;a class=&#34;anchor-link&#34; href=&#34;#idealings-with-codeium&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Code below sets up various configurations and functions for the Codeium
package in Emacs. It enables Codeium for code completion globally,
configures the mode line display, sets up filters for API calls, and
defines functions to retrieve the document text and cursor offset for
better performance. The annotations explain the purpose and
functionality of each part of the code.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-elisp&#34; data-lang=&#34;elisp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;;; The code below sets up various configurations and functions for the&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;;; Codeium package in Emacs. It enables Codeium for code completion&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;;; globally, configures the mode line display, sets up filters for API&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;;; calls, and defines functions to retrieve the document text and&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;;; cursor offset for better performance. The annotations explain the&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;;; purpose and functionality of each part of the code.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;;; Add Codeium completion function to completion-at-point-functions&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;add-to-list&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;completion-at-point-functions&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;             &lt;span class=&#34;nf&#34;&gt;#&amp;#39;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;codeium-completion-at-point&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;;; Adds the Codeium completion function to the list of functions&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;;; called when trying to complete text at point, making Codeium&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;;; available for code completion globally.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;;; Do not use popup boxes&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;setq&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;use-dialog-box&lt;/span&gt; &lt;span class=&#34;no&#34;&gt;nil&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;;; Disables the use of popup boxes, as Codeium likely uses other means&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;;; of displaying information.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;;; Configure Codeium mode line&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;setq&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;codeium-mode-line-enable&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;lambda&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;api&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;memq&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;api&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;CancelRequest&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;Heartbeat&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;AcceptCompletion&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)))))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;add-to-list&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;mode-line-format&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;:eval&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;car-safe&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;codeium-mode-line&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt; &lt;span class=&#34;no&#34;&gt;t&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;;; Configure Codeium to display its status in the mode line, filtering&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;;; out certain API calls (CancelRequest, Heartbeat, AcceptCompletion)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;;; from being displayed. Doing so can be useful for debugging or&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;;; monitoring purposes.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;;; Filter for enabled Codeium API calls&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;setq&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;codeium-api-enabled&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;lambda&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;api&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;memq&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;api&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;              &lt;span class=&#34;o&#34;&gt;&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;GetCompletions&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;Heartbeat&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;CancelRequest&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                               &lt;span class=&#34;nv&#34;&gt;GetAuthToken&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;RegisterUser&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                               &lt;span class=&#34;nv&#34;&gt;auth-redirect&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;AcceptCompletion&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;;; Sets a lambda function to filter for enabled Codeium API calls,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;;; allowing only certain API calls (GetCompletions, Heartbeat,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;;; CancelRequest, GetAuthToken, RegisterUser, auth-redirect,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;;; AcceptCompletion) to be processed.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;;; Set document text for better performance&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;setq&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;codeium/document/text&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;lambda&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;buffer-substring-no-properties&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;         &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;max&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;point&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;3000&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;point-min&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;         &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;min&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;point&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1000&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;point-max&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)))))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;;; Sets a function to retrieve the document text for Codeium,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;;; retrieving a portion of the buffer text around the current point&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;;; (up to 3000 characters before and 1000 characters after) to improve&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;;; performance.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;;; Set cursor offset for better performance&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;setq&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;codeium/document/cursor_offset&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;lambda&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;codeium-utf8-byte-length&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;         &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;buffer-substring-no-properties&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;max&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;point&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;3000&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;point-min&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;point&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)))))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;;; Sets a function to calculate the cursor offset for Codeium,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;;; calculating the byte length of the text from the start of the&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;;; document text up to the current point, likely used by Codeium to&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;;; determine the position of the cursor within the document text.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;landing-on-corfu&#34; class=&#34;anchor-header&#34;&gt;Landing on corfu &lt;a class=&#34;anchor-link&#34; href=&#34;#landing-on-corfu&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The setup here is quite simple since we only enable auto-completion and
provide global availability for corfu.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-elisp&#34; data-lang=&#34;elisp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;setq&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;corfu-auto&lt;/span&gt; &lt;span class=&#34;no&#34;&gt;t&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;                     &lt;span class=&#34;c1&#34;&gt;;enable auto completion&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;global-corfu-mode&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;                     &lt;span class=&#34;c1&#34;&gt;;enable corfu-mode globally&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;weaving-the-capestry&#34; class=&#34;anchor-header&#34;&gt;Weaving the capestry &lt;a class=&#34;anchor-link&#34; href=&#34;#weaving-the-capestry&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The cape package is a completion engine that provides numerous
completion commands in various situations and each has its own
keybinding. Uncomment any of the items below to enable.&lt;/p&gt;
&lt;p&gt;[TODO: We don&amp;rsquo;t know what a lot of these items do since we adapted the
code from the &lt;a href=&#34;https://github.com/minad/cape&#34;&gt;cape.el page&lt;/a&gt;.]&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-elisp&#34; data-lang=&#34;elisp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;;; Bind dedicated completion commands&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;global-set-key&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;kbd&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;C-c p p&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;completion-at-point&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;;; capf&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;global-set-key&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;kbd&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;C-c p t&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;complete-tag&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;global-set-key&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;kbd&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;C-c p d&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;cape-dabbrev&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;global-set-key&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;kbd&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;C-c p h&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;cape-history&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;global-set-key&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;kbd&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;C-c p f&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;cape-file&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;global-set-key&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;kbd&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;C-c p e&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;cape-elisp-block&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;global-set-key&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;kbd&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;C-c p k&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;cape-keyword&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;;; (global-set-key (kbd &amp;#34;C-c p a&amp;#34;) &amp;#39;cape-abbrev)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;;; (global-set-key (kbd &amp;#34;C-c p l&amp;#34;) &amp;#39;cape-line)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;;; (global-set-key (kbd &amp;#34;C-c p w&amp;#34;) &amp;#39;cape-dict)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;;; (global-set-key (kbd &amp;#34;C-c p :&amp;#34;) &amp;#39;cape-emoji)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;;; (global-set-key (kbd &amp;#34;C-c p s&amp;#34;) &amp;#39;cape-elisp-symbol)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;;; (global-set-key (kbd &amp;#34;C-c p \\&amp;#34;) &amp;#39;cape-tex)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;;; (global-set-key (kbd &amp;#34;C-c p _&amp;#34;) &amp;#39;cape-tex)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;;; (global-set-key (kbd &amp;#34;C-c p ^&amp;#34;) &amp;#39;cape-tex)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;;; (global-set-key (kbd &amp;#34;C-c p &amp;amp;&amp;#34;) &amp;#39;cape-sgml)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;;; (global-set-key (kbd &amp;#34;C-c p r&amp;#34;) &amp;#39;cape-rfc1345)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;;; Add to the global default value of `completion-at-point-functions&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;;; which is used by `completion-at-point&amp;#39;. The order of the functions&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;;; matters, the first function returning a result wins.  Note that the&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;;; list of buffer-local completion functions takes precedence over the&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;;; global list. However, since we don&amp;#39;t really know what most of these&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;;; are for, we are just commenting them out.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;add-hook&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;completion-at-point-functions&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;#&amp;#39;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;cape-dabbrev&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;add-hook&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;completion-at-point-functions&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;#&amp;#39;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;cape-history&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;add-hook&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;completion-at-point-functions&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;#&amp;#39;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;cape-file&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;add-hook&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;completion-at-point-functions&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;#&amp;#39;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;cape-elisp-block&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;add-hook&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;completion-at-point-functions&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;#&amp;#39;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;cape-keyword&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;;; (add-hook &amp;#39;completion-at-point-functions #&amp;#39;cape-tex)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;;; (add-hook &amp;#39;completion-at-point-functions #&amp;#39;cape-sgml)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;;; (add-hook &amp;#39;completion-at-point-functions #&amp;#39;cape-rfc1345)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;;; (add-hook &amp;#39;completion-at-point-functions #&amp;#39;cape-abbrev)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;;; (add-hook &amp;#39;completion-at-point-functions #&amp;#39;cape-dict)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;;; (add-hook &amp;#39;completion-at-point-functions #&amp;#39;cape-elisp-symbol)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;;; (add-hook &amp;#39;completion-at-point-functions #&amp;#39;cape-line)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;one-capf-to-joule-them-all&#34; class=&#34;anchor-header&#34;&gt;One capf to joule them all &lt;a class=&#34;anchor-link&#34; href=&#34;#one-capf-to-joule-them-all&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The my/capf-for-all alias is used for the cape-capf-super function for
better clarity. The code sets the cape-capf-properties are set for
codeium and dabbrev (though more can be added).&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-elisp&#34; data-lang=&#34;elisp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;defalias&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;my/capf-for-all&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;;; Create an alias &amp;#39;my/capf-for-all&amp;#39; for the following expression&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;cape-capf-super&lt;/span&gt;                      &lt;span class=&#34;c1&#34;&gt;;Combine multiple completion sources using cape-capf-super&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;cape-capf-silent&lt;/span&gt;                    &lt;span class=&#34;c1&#34;&gt;;Suppress the annotation for the following completion sources&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;c1&#34;&gt;;; Set properties for the codeium-completion-at-point function&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;cape-capf-properties&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;#&amp;#39;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;codeium-completion-at-point&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                        &lt;span class=&#34;nb&#34;&gt;:annotation-function&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                        &lt;span class=&#34;c1&#34;&gt;;; Define an anonymous function to provide the annotation&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                        &lt;span class=&#34;nf&#34;&gt;#&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;lambda&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;_&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;propertize&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;  odeium&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                                                  &lt;span class=&#34;ss&#34;&gt;&amp;#39;face&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;font-lock-comment-face&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                        &lt;span class=&#34;c1&#34;&gt;;; Set the company-kind property to &amp;#39;magic&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                        &lt;span class=&#34;c1&#34;&gt;;; It is a cape property specifying type of completion candidate&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                        &lt;span class=&#34;c1&#34;&gt;;; not really required, but can provide a better visual experience&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                        &lt;span class=&#34;nb&#34;&gt;:company-kind&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;lambda&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;_&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;magic&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;c1&#34;&gt;;; Prevent duplicates from the eglot-completion-at-point function&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;cape-capf-buster&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;#&amp;#39;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;eglot-completion-at-point&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;equal&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;c1&#34;&gt;;; Set properties for the cape-dabbrev function&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;cape-capf-properties&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;#&amp;#39;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;cape-dabbrev&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                       &lt;span class=&#34;nb&#34;&gt;:annotation-function&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                       &lt;span class=&#34;c1&#34;&gt;;; Define an anonymous function to provide the annotation&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                       &lt;span class=&#34;nf&#34;&gt;#&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;lambda&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;_&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;propertize&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34; Dabbrev&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                                                 &lt;span class=&#34;ss&#34;&gt;&amp;#39;face&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;font-lock-comment-face&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;c1&#34;&gt;;; if line gets too chatty&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;cape-capf-silent&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;c1&#34;&gt;;; Suppress the annotation for the following completion source&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;cape-capf-properties&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;#&amp;#39;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;cape-line&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                        &lt;span class=&#34;c1&#34;&gt;;; Set properties for the cape-line function&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                        &lt;span class=&#34;nb&#34;&gt;:annotation-function&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                        &lt;span class=&#34;c1&#34;&gt;;; Define an anonymous function to provide the annotation&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                        &lt;span class=&#34;nf&#34;&gt;#&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;lambda&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;_&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;propertize&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34; Line&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                                                  &lt;span class=&#34;ss&#34;&gt;&amp;#39;face&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;font-lock-comment-face&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))))))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;engaging-in-eglottony&#34; class=&#34;anchor-header&#34;&gt;Engaging in eglottony &lt;a class=&#34;anchor-link&#34; href=&#34;#engaging-in-eglottony&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Completion settings for eglot managed modes are configured here pulling
everything together to work with eglot.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-elisp&#34; data-lang=&#34;elisp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;defun&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;my/eglotted-modes-config&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;s&#34;&gt;&amp;#34;Configuration of settings for eglot-managed modes&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;setq-local&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;completion-category-overrides&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;file&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;styles&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;partial-completion&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;              &lt;span class=&#34;c1&#34;&gt;;; Set completion-category-overrides for file category&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;              &lt;span class=&#34;nv&#34;&gt;completion-category-defaults&lt;/span&gt; &lt;span class=&#34;no&#34;&gt;nil&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;              &lt;span class=&#34;c1&#34;&gt;;; Clear completion-category-defaults&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;              &lt;span class=&#34;nv&#34;&gt;completion-styles&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;orderless&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;partial-completion&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;basic&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;              &lt;span class=&#34;c1&#34;&gt;;; Set completion styles&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;              &lt;span class=&#34;nv&#34;&gt;completion-at-point-functions&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;list&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;#&amp;#39;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;cape-file&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;my/capf-for-all&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;              &lt;span class=&#34;c1&#34;&gt;;; Set completion-at-point-functions to include cape-file and my/capf-for-all&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;;; Finally, add the my/eglotted-modes-config function to the&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;;; eglot-managed-mode-hook so it gets called when eglot runs.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;add-hook&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;eglot-managed-mode-hook&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;#&amp;#39;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;my/eglotted-modes-config&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This setup is mainly to get codeium to work on clojure scripts with
eglot as the language server client. When programming elisp though we
don&amp;rsquo;t need capfs and eglot. In fact, the
&lt;a href=&#34;https://github.com/Exafunction/codeium.el&#34;&gt;codeium.el&lt;/a&gt; page provides
code to work with elisp (see cl-letf* function towards the bottom).&lt;/p&gt;
&lt;p&gt;[TODO: try to get codeium to work with shell better.]&lt;/p&gt;
&lt;h1 id=&#34;completers&#34; class=&#34;anchor-header&#34;&gt;completers &lt;a class=&#34;anchor-link&#34; href=&#34;#completers&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Several have been examined including ido|fido, vertico, ivy, but none
offer as much as helm. Though it may have been slow on old computers,
speed is not an issue now.&lt;/p&gt;
&lt;h2 id=&#34;helm-1&#34; class=&#34;anchor-header&#34;&gt;helm &lt;a class=&#34;anchor-link&#34; href=&#34;#helm-1&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/emacs-helm/helm/wiki#general-concept&#34;&gt;wiki&lt;/a&gt; Doing
things in helm is different from vanilla emacs:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;use windows rather than minibuffer&lt;/li&gt;
&lt;li&gt;use pattern rather than &amp;lt;tab&amp;gt;&lt;/li&gt;
&lt;li&gt;&amp;lt;tab&amp;gt;|C-i gives available actions&lt;/li&gt;
&lt;li&gt;C-j|C-z persistent action (helm buffer persists)&lt;/li&gt;
&lt;li&gt;in a helm buffer, marking is not done with m&lt;/li&gt;
&lt;li&gt;embedded help in org buffer with C-h m&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Certain emacs commands have been helmed.&lt;/p&gt;
&lt;h2 id=&#34;ido&#34; class=&#34;anchor-header&#34;&gt;ido &lt;a class=&#34;anchor-link&#34; href=&#34;#ido&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Though built-in and mostly nice, the ido-switch-buffer doesn&amp;rsquo;t always
work. The ido flex matching was excellent for the most part, though it
could get confusing in some situations (helm&amp;rsquo;s locate is far better -
almost as powerful as recoll file find or fzf fuzzy find.) Though fido
is also built-in, we found no real advantage to it.&lt;/p&gt;
&lt;h2 id=&#34;vertico&#34; class=&#34;anchor-header&#34;&gt;vertico &lt;a class=&#34;anchor-link&#34; href=&#34;#vertico&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;It is supposed to be an ido|ivy replacement forked from selectrum, but
doesn&amp;rsquo;t seem to have any real advantages. Easy to get up and running,
but not so easy to figure out how to optimize things. One advantage is
it works with existing emacs bindings.&lt;/p&gt;
&lt;h2 id=&#34;ivy&#34; class=&#34;anchor-header&#34;&gt;ivy &lt;a class=&#34;anchor-link&#34; href=&#34;#ivy&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;We use to use this as well as icicles many years ago, but switched to
ido because things weren&amp;rsquo;t as messy.&lt;/p&gt;
&lt;h1 id=&#34;daemon-as-systemd&#34; class=&#34;anchor-header&#34;&gt;daemon as systemd &lt;a class=&#34;anchor-link&#34; href=&#34;#daemon-as-systemd&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;$ systemctl –user enable –now emacs cp
&lt;em&gt;usr/lib/systemd/user/emacs.service .config/systemd/user&lt;/em&gt; systemctl
enable –user emacs&lt;/p&gt;
&lt;h1 id=&#34;default-editor&#34; class=&#34;anchor-header&#34;&gt;default editor &lt;a class=&#34;anchor-link&#34; href=&#34;#default-editor&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;export EDITOR=emacs &lt;a href=&#34;https://www.systutorials.com/how-to-change-the-default-text-editor-on-linux/&#34;&gt;How to change the default text editor on
Linux&lt;/a&gt;&lt;/p&gt;
&lt;h1 id=&#34;dired-1&#34; class=&#34;anchor-header&#34;&gt;dired &lt;a class=&#34;anchor-link&#34; href=&#34;#dired-1&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Edit directories with emacs which is possibly far more useful than we
ever thought. &lt;a href=&#34;https://www.gnu.org/software/emacs/refcards/pdf/dired-ref.pdf&#34;&gt;Reference Card
pdf.&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;enter&#34; class=&#34;anchor-header&#34;&gt;enter &lt;a class=&#34;anchor-link&#34; href=&#34;#enter&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;C-x d from eshell or provide a pattern!&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;C-x (4|5) d ~/
C-x d ~/*
C-x d ~/.*
C-x d ~/D*
C-x d ~/**/*.el ;globstar should work but doesn&#39;t
C-x (4) C-j if done in dired gives parent dir
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&#34;navigation&#34; class=&#34;anchor-header&#34;&gt;navigation &lt;a class=&#34;anchor-link&#34; href=&#34;#navigation&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;n,p
j &amp;lt;==&amp;gt; C-x C-f
M-s f (M-)C-s searches just for filename (or change dired-isearch-filenames to t)
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&#34;deletion&#34; class=&#34;anchor-header&#34;&gt;deletion &lt;a class=&#34;anchor-link&#34; href=&#34;#deletion&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;DEL doesn&#39;t work
d,u,x does (on regions too)
m,D is an alternative
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&#34;multiple-flagging&#34; class=&#34;anchor-header&#34;&gt;multiple flagging &lt;a class=&#34;anchor-link&#34; href=&#34;#multiple-flagging&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;#,~,. probably not going to use
% g flag garbage files .log, .toc, .dvi, .bak ...
% d regexp very nice!!
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&#34;toggle-hidden-files&#34; class=&#34;anchor-header&#34;&gt;toggle hidden files &lt;a class=&#34;anchor-link&#34; href=&#34;#toggle-hidden-files&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;C-u s and -al -&amp;gt; -l or may be this
[&lt;a href=&#34;https://www.emacswiki.org/emacs/DiredOmitMode&#34;&gt;https://www.emacswiki.org/emacs/DiredOmitMode&lt;/a&gt;][Toggle Showing Dot
Files]&lt;/p&gt;
&lt;h2 id=&#34;visiting-files&#34; class=&#34;anchor-header&#34;&gt;visiting files &lt;a class=&#34;anchor-link&#34; href=&#34;#visiting-files&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;RET|f
o,C-o
v readonly view
^,..
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;not same as openwith which can be done in various ways, but simplest for
now is M-! &amp;lt;app&amp;gt; file.&lt;br&gt;
this isn&amp;rsquo;t as convenient as nnn, but should do for now. dired+
apparently has a way to do this.&lt;/p&gt;
&lt;h2 id=&#34;visit-dir&#34; class=&#34;anchor-header&#34;&gt;visit dir &lt;a class=&#34;anchor-link&#34; href=&#34;#visit-dir&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;use a instead of C-m to discard ancestors use C-x C-j to jump to parent
(but that will leave trail), so go to .. and use a&lt;/p&gt;
&lt;h2 id=&#34;dired-marks-and-flags&#34; class=&#34;anchor-header&#34;&gt;dired marks and flags &lt;a class=&#34;anchor-link&#34; href=&#34;#dired-marks-and-flags&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;these offer many possibilities, but are awkward to remember right now.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;m can do region or C-u N as well
* N number and size of files in marked region
* * mark exe files
* @ mark slinks
* s mark all in dir
* / mark dirs
U remove all marks

mark by regexp
% m|g
% d


some of these may be useful though we can&#39;t see why right now:\\
* t toggle
M-{} move up/down to next marked file
C-/ undo dired changes
* c old new: * c D t  * c SPC D  * c t SPC
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&#34;operating-on-files&#34; class=&#34;anchor-header&#34;&gt;operating on files &lt;a class=&#34;anchor-link&#34; href=&#34;#operating-on-files&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;D
Z
C new
R new to existing dir (dired-create-destination-dirs)
S new

A regexp very nice!!
Q regexp very nice!!

% u,l upper,lower case filenames

probably not useful at this stage
M modespec
G newgroup
O newowner
W open file externally
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&#34;transforming-filenames&#34; class=&#34;anchor-header&#34;&gt;transforming filenames &lt;a class=&#34;anchor-link&#34; href=&#34;#transforming-filenames&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;% R,C,H,S computes new name by regexp doing a search-replace not sure
how important this is since we can treat the dir as emacs buffer&lt;/p&gt;
&lt;h2 id=&#34;subdirs&#34; class=&#34;anchor-header&#34;&gt;subdirs &lt;a class=&#34;anchor-link&#34; href=&#34;#subdirs&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;i
C-u C-SPC
$
M-$
C-u k
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&#34;symlinks&#34; class=&#34;anchor-header&#34;&gt;symlinks &lt;a class=&#34;anchor-link&#34; href=&#34;#symlinks&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Go to item symlink points to&lt;/p&gt;
&lt;h2 id=&#34;find-and-locate&#34; class=&#34;anchor-header&#34;&gt;find and locate &lt;a class=&#34;anchor-link&#34; href=&#34;#find-and-locate&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;these are done from dired&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;M-x find-name-dired
M-x locate
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&#34;view-images&#34; class=&#34;anchor-header&#34;&gt;view images &lt;a class=&#34;anchor-link&#34; href=&#34;#view-images&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;C-t d on marked image files
M-x image-dired
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;rotations possible with jpegtran&lt;/p&gt;
&lt;p&gt;delete and tag of image files also possible, so can this replace
gthumb!!!&lt;/p&gt;
&lt;h2 id=&#34;other-features&#34; class=&#34;anchor-header&#34;&gt;other features &lt;a class=&#34;anchor-link&#34; href=&#34;#other-features&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;M-x dired-create-empty-file
M-x dired-compare-directories
M-s a C-s isearch on filenames
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&#34;zz&#34; class=&#34;anchor-header&#34;&gt;zz &lt;a class=&#34;anchor-link&#34; href=&#34;#zz&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://www.gnu.org/software/emacs/manual/html_node/emacs/Dired.html&#34;&gt;Dired, the Directory
Editor&lt;/a&gt;
&lt;a href=&#34;https://www.emacswiki.org/emacs/DiredMode&#34;&gt;DiredMode&lt;/a&gt;&lt;/p&gt;
&lt;h1 id=&#34;elfeed&#34; class=&#34;anchor-header&#34;&gt;elfeed &lt;a class=&#34;anchor-link&#34; href=&#34;#elfeed&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/skeeto/elfeed&#34;&gt;Elfeed Emacs Web Feed Reader&lt;/a&gt; &lt;a href=&#34;https://www.maketecheasier.com/use-emacs-for-rss-with-elfeed/&#34;&gt;How to
Use Emacs for RSS with
Elfeed&lt;/a&gt;
&lt;a href=&#34;https://koustuvsinha.com/post/emacs_research_workflow/&#34;&gt;A workflow for reading, managing and discovering ML research papers
with Emacs&lt;/a&gt;
&lt;a href=&#34;http://heikkil.github.io/blog/2015/05/09/notes-from-elfeed-entries/&#34;&gt;Note taking 3: Notes from elfeed
entries&lt;/a&gt;
!!!&lt;/p&gt;
&lt;p&gt;Setup init-elfeed.el with:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;vars for urls (because they can get very long and look messy)&lt;/li&gt;
&lt;li&gt;the feeds var elfeed-feeds&lt;/li&gt;
&lt;li&gt;the update var elfeed-search-update gets the feeds&lt;/li&gt;
&lt;li&gt;delete feed by removing it on M-x customize elfeed-feeds&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;index-mechanism&#34; class=&#34;anchor-header&#34;&gt;index mechanism &lt;a class=&#34;anchor-link&#34; href=&#34;#index-mechanism&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;trying to figure out how to search the feeds from .elfeed in
data/1d/1da2ce0dd6436d802f0e1b35ad60f8b745780a5b in index
&amp;ldquo;&lt;a href=&#34;https://www.sciencedaily.com/rss/top/science.xml&#34;&gt;https://www.sciencedaily.com/rss/top/science.xml&lt;/a&gt;&amp;rdquo; nil)
(&amp;ldquo;&lt;a href=&#34;https://www.sciencedaily.com&#34;&gt;www.sciencedaily.com&lt;/a&gt;&amp;rdquo; .
&amp;ldquo;&lt;a href=&#34;https://www.sciencedaily.com/releases/2021/04/210405150225.htm&#34;&gt;https://www.sciencedaily.com/releases/2021/04/210405150225.htm&lt;/a&gt;&amp;rdquo;)
#s(elfeed-entry (&amp;ldquo;&lt;a href=&#34;https://www.sciencedaily.com&#34;&gt;www.sciencedaily.com&lt;/a&gt;&amp;rdquo; .
&amp;ldquo;&lt;a href=&#34;https://www.sciencedaily.com/releases/2021/04/210405150225.htm&#34;&gt;https://www.sciencedaily.com/releases/2021/04/210405150225.htm&lt;/a&gt;&amp;rdquo;)
&amp;ldquo;Elasticity to position microplates on curved 2D fluids&amp;rdquo;
&amp;ldquo;&lt;a href=&#34;https://www.sciencedaily.com/releases/2021/04/210405150225.htm&#34;&gt;https://www.sciencedaily.com/releases/2021/04/210405150225.htm&lt;/a&gt;&amp;rdquo;
1617649345.0 #s(elfeed-ref &amp;ldquo;1da2ce0dd6436d802f0e1b35ad60f8b745780a5b&amp;rdquo;)
html nil (unread)&lt;/p&gt;
&lt;p&gt;There is likely no benefit to recolling the entire .elfeed dir because&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;we really don&amp;rsquo;t want all the feeds&lt;/li&gt;
&lt;li&gt;those that we do want probably don&amp;rsquo;t have enough text content&lt;/li&gt;
&lt;li&gt;the title of the article contains most of the info and that is already
searchable&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Saving specific articles to zitems may be useful, so an elisp script
does the job mostly written by perplexity!&lt;/p&gt;
&lt;h2 id=&#34;emailing-a-buffer&#34; class=&#34;anchor-header&#34;&gt;emailing a buffer &lt;a class=&#34;anchor-link&#34; href=&#34;#emailing-a-buffer&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;C-ret to setup email C-M-p to prger&lt;/p&gt;
&lt;h2 id=&#34;setup-init-elfeed&#34; class=&#34;anchor-header&#34;&gt;setup init-elfeed &lt;a class=&#34;anchor-link&#34; href=&#34;#setup-init-elfeed&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;use variable for feeds remove titles, but set them as tags (setq aiblog
&amp;lt;URL&amp;gt;) though we did have (setq aiblog (list &amp;lt;URL&amp;gt; &amp;lt;TITLE)) title
now &amp;quot;&amp;quot; and set as a tag&lt;/p&gt;
&lt;h2 id=&#34;regex-group-replacement&#34; class=&#34;anchor-header&#34;&gt;regex group replacement &lt;a class=&#34;anchor-link&#34; href=&#34;#regex-group-replacement&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;(car aiblog) -&amp;gt; aiblog (car $&lt;code&gt;......&lt;/code&gt;$) -&amp;gt; \1&lt;/p&gt;
&lt;h1 id=&#34;eshell&#34; class=&#34;anchor-header&#34;&gt;eshell &lt;a class=&#34;anchor-link&#34; href=&#34;#eshell&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;some of these items apply to emacs in general.&lt;/p&gt;
&lt;h2 id=&#34;builtins&#34; class=&#34;anchor-header&#34;&gt;builtins &lt;a class=&#34;anchor-link&#34; href=&#34;#builtins&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;occur &amp;lt;regex&amp;gt; displays matching items in history&lt;/p&gt;
&lt;p&gt;cd =, cd =foo, cd -N are excellent for moving into directories!&lt;/p&gt;
&lt;p&gt;sudo works using eshell/sudo, but as an alias
(eshell-prefer-lisp-functions didn&amp;rsquo;t work)&lt;/p&gt;
&lt;p&gt;built-in variables:&lt;br&gt;
$+, $-, $$, $? (with ending underscores), may be useful for
scripting&lt;br&gt;
also, note specific args handling with $*, $1, $2 …&lt;/p&gt;
&lt;h2 id=&#34;eshell-to-have-path&#34; class=&#34;anchor-header&#34;&gt;eshell to have $PATH &lt;a class=&#34;anchor-link&#34; href=&#34;#eshell-to-have-path&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;;; match zshenv PATH (setenv &amp;ldquo;PATH&amp;rdquo; (shell-command-to-string &amp;ldquo;echo -n
$PATH&amp;rdquo;))&lt;/p&gt;
&lt;p&gt;that seems a lot simpler (not sure if it will work either), however, we
did it another way by&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;echo $PATH &amp;gt; tmp&lt;/li&gt;
&lt;li&gt;edit tmp&lt;/li&gt;
&lt;li&gt;PATH=$(cat tmp)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;after the above in zsh, we go to eshell and&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;(setq path &amp;lt;copied from echo $PATH&amp;gt;)&lt;/li&gt;
&lt;li&gt;(setq exec-path (split-string path &amp;ldquo;:&amp;rdquo;))&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;expansions&#34; class=&#34;anchor-header&#34;&gt;expansions &lt;a class=&#34;anchor-link&#34; href=&#34;#expansions&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-elisp&#34; data-lang=&#34;elisp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;setq&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;this is a string with extension.test&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$var&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$&lt;/span&gt;&lt;span class=&#34;ss&#34;&gt;&amp;#39;var&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;#39;&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;disambiguate&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$#var&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;length&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;sexp&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;can&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;be&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;used&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;a&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;string&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;${cmd}&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;output&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;of&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;cmd&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$&amp;lt;cmd&amp;gt;&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;output&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;to&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;tmpfile&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$var&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;ith&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;element&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;of&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;sequence&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;string&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;split&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;on&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;spc&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$var&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;n0&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;n1&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;n2&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;...&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;split&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;on&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;;interpolation into larger string !!!&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$var&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;\\\\&amp;#34;&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;;!!!&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$var&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;[0-9]+&amp;#34;&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;10&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;20&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;;!!!&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$var&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;hello&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;;!!!&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$#var&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;hello&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;;!!!&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;fix-the-history-issue&#34; class=&#34;anchor-header&#34;&gt;fix the history!! issue &lt;a class=&#34;anchor-link&#34; href=&#34;#fix-the-history-issue&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;customize eshell-expand-input-functions by INS
eshell-expand-history-references t&lt;/p&gt;
&lt;h2 id=&#34;for-loop&#34; class=&#34;anchor-header&#34;&gt;for loop &lt;a class=&#34;anchor-link&#34; href=&#34;#for-loop&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-elisp&#34; data-lang=&#34;elisp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;VAR&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;TOKENS&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;command&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;invocation&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;s&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;split-string&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;shell-command-to-string&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;cat /etc/passwd&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;\n&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;print&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;string-join&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;list&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;i&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;BOO&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34; &amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;help&#34; class=&#34;anchor-header&#34;&gt;help &lt;a class=&#34;anchor-link&#34; href=&#34;#help&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;help on function at point: C-h f&lt;/p&gt;
&lt;h2 id=&#34;history&#34; class=&#34;anchor-header&#34;&gt;history &lt;a class=&#34;anchor-link&#34; href=&#34;#history&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;M-p|n works as expected&lt;/p&gt;
&lt;p&gt;M-r|s is a bit awkward compared to C-r in regular shell, though there
may be a better way&lt;/p&gt;
&lt;p&gt;unlike C-r in a regular shell, M-r doesn&amp;rsquo;t keep cycling back … need to
figure out how to deal with this&lt;/p&gt;
&lt;h2 id=&#34;todo-pcomplete&#34; class=&#34;anchor-header&#34;&gt;&lt;span class=&#34;todo TODO&#34;&gt;TODO&lt;/span&gt; pcomplete &lt;a class=&#34;anchor-link&#34; href=&#34;#todo-pcomplete&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;not sure what this is &lt;a href=&#34;https://www.gnu.org/software/emacs/manual/html_mono/eshell.html#Completion&#34;&gt;completion
concept&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;redirection&#34; class=&#34;anchor-header&#34;&gt;redirection &lt;a class=&#34;anchor-link&#34; href=&#34;#redirection&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;mostly same as zsh, but we also have these neat items&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-elisp&#34; data-lang=&#34;elisp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;err&#34;&gt;#&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;&amp;lt;buffer-name&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nf&#34;&gt;-&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;/dev/clip&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;as well as being able to define virtual targets with (&amp;quot;/dev/name&amp;quot;
function mode)&lt;/p&gt;
&lt;h2 id=&#34;scripts&#34; class=&#34;anchor-header&#34;&gt;scripts &lt;a class=&#34;anchor-link&#34; href=&#34;#scripts&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;use source from eshell and eshell-source-file from rest of emacs&lt;/p&gt;
&lt;h2 id=&#34;ssh-to-remote&#34; class=&#34;anchor-header&#34;&gt;ssh to remote &lt;a class=&#34;anchor-link&#34; href=&#34;#ssh-to-remote&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;C-x C-d /ssh:lentil: M-x eshell and it works perfectly!&lt;/p&gt;
&lt;h2 id=&#34;sudo-issue&#34; class=&#34;anchor-header&#34;&gt;sudo issue &lt;a class=&#34;anchor-link&#34; href=&#34;#sudo-issue&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;which sudo give /usr/bin/sudo - even when lisp functions are prefered
!!!!! so we use an alias sudo eshell/sudo $* apparently the
documentation is
&lt;a href=&#34;https://emacs.stackexchange.com/a/19107/37749&#34;&gt;misleading&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;alias sff find-file /sudo::$1&lt;/p&gt;
&lt;h2 id=&#34;zz-1&#34; class=&#34;anchor-header&#34;&gt;zz &lt;a class=&#34;anchor-link&#34; href=&#34;#zz-1&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://www.gnu.org/software/emacs/manual/html_mono/eshell.html&#34;&gt;eshell
manual&lt;/a&gt;&lt;/p&gt;
&lt;h1 id=&#34;ess-and-paredit&#34; class=&#34;anchor-header&#34;&gt;ess and paredit &lt;a class=&#34;anchor-link&#34; href=&#34;#ess-and-paredit&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;these two don&amp;rsquo;t play nicely and you get c () so remove paredit from .R
files and things seem to be just fine&lt;/p&gt;
&lt;h1 id=&#34;eww&#34; class=&#34;anchor-header&#34;&gt;eww &lt;a class=&#34;anchor-link&#34; href=&#34;#eww&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;The browser is quite impressive doing what it is primarily designed
for - browsing simple sites and reading docs. However, some of the
keybindings and commands don&amp;rsquo;t seem to work. Not an important matter
though since we likely won&amp;rsquo;t use it much.&lt;/p&gt;
&lt;h1 id=&#34;flys&#34; class=&#34;anchor-header&#34;&gt;flys &lt;a class=&#34;anchor-link&#34; href=&#34;#flys&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;There is a fly for spelling, flyspell, and 2 for code syntax checking,
flymake (builtin to emacs), flycheck (from elpa).&lt;/p&gt;
&lt;h2 id=&#34;flyspell&#34; class=&#34;anchor-header&#34;&gt;flyspell &lt;a class=&#34;anchor-link&#34; href=&#34;#flyspell&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Used for spell checking and allows adding to the dictionary.&lt;/p&gt;
&lt;h2 id=&#34;flymake&#34; class=&#34;anchor-header&#34;&gt;flymake &lt;a class=&#34;anchor-link&#34; href=&#34;#flymake&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Used for checking code syntax and works with LSP servers through clients
like lsp-mode and eglot.&lt;/p&gt;
&lt;h2 id=&#34;flycheck&#34; class=&#34;anchor-header&#34;&gt;flycheck &lt;a class=&#34;anchor-link&#34; href=&#34;#flycheck&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Does the same as flymake, but presumably works better and with more
languages (eg sh-zsh). The checking seems to be automatic, but with lsp
I&amp;rsquo;m not sure if it is required. Quite possibly flymake is sufficient,
but we should test both out. Lsp uses flycheck if it is available
automatically, so we don&amp;rsquo;t have to specify that flymake be hooked for a
language.&lt;/p&gt;
&lt;h1 id=&#34;fdm&#34; class=&#34;anchor-header&#34;&gt;fdm &lt;a class=&#34;anchor-link&#34; href=&#34;#fdm&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;fetch and deliver mail it is MDA which can fetch
&lt;a href=&#34;https://wiki.archlinux.org/title/Fdm&#34;&gt;https://wiki.archlinux.org/title/Fdm&lt;/a&gt; simple config for our notmuch
purposes&lt;/p&gt;
&lt;h1 id=&#34;following-symlinks&#34; class=&#34;anchor-header&#34;&gt;following symlinks &lt;a class=&#34;anchor-link&#34; href=&#34;#following-symlinks&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;C-h v vc-follow-symlinks and change the value this will handle git asks
when opening a file !!!&lt;/p&gt;
&lt;h1 id=&#34;fountain-mode&#34; class=&#34;anchor-header&#34;&gt;fountain-mode &lt;a class=&#34;anchor-link&#34; href=&#34;#fountain-mode&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id=&#34;screenplain&#34; class=&#34;anchor-header&#34;&gt;screenplain &lt;a class=&#34;anchor-link&#34; href=&#34;#screenplain&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;doesn&amp;rsquo;t handle C-c C-a synopsis unless there is a blank line macro
fynopsis takes care of this and is bound this way: (add-hook
&amp;lsquo;fountain-mode-hook ; enters synopsis for screenplain issue (lambda ()
(local-set-key (kbd &amp;ldquo;C-c C-a&amp;rdquo;) &amp;lsquo;fynopsis)))&lt;/p&gt;
&lt;h1 id=&#34;greppers&#34; class=&#34;anchor-header&#34;&gt;greppers &lt;a class=&#34;anchor-link&#34; href=&#34;#greppers&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;These search for occurrences of pattern in the buffer and/or in files.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;emacs grep&lt;/strong&gt; is good and straightforward to use from the menu
requiring only a pattern and a directory of files.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;helm ag&lt;/strong&gt; M-g f will give pattern at|before point by default for the
directory, so it can do much the same job as rg, but only on the
directory you are already in. It is faster to use, if you want to search
pwd only and not some other directory, since you have to go there,
whereas C-c s with rg let&amp;rsquo;s you setup in whatever directory you want to.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;rg&lt;/strong&gt; C-c s is supposed to be faster with better customization. Though
deadgrip was fine (and we like the rip pun), it was awkward to get into
the directory we wanted. The rg package offers many more features and is
into higher versions.&lt;/p&gt;
&lt;p&gt;We find rg to be easier to setup and use too - with a guiding menu after
C-c s and the &lt;a href=&#34;https://rgel.readthedocs.io/en/latest/index.html&#34;&gt;docs&lt;/a&gt;
are quite thorough as well.&lt;/p&gt;
&lt;p&gt;To use ripgrep instead of grep see
&lt;a href=&#34;https://stegosaurusdormant.com/emacs-ripgrep/&#34;&gt;article&lt;/a&gt;. At this point,
we see no real advantage to replacing grep with ripgrep. The code to
insert in init.el is something like this:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-elisp&#34; data-lang=&#34;elisp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;grep-apply-setting&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;ss&#34;&gt;&amp;#39;grep-find-command&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;o&#34;&gt;&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;rg -n -H --no-heading -e &amp;#39;&amp;#39; $(git rev-parse --show-toplevel || pwd)&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;.&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;27&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Don&amp;rsquo;t need to do this though because (require &amp;lsquo;rg)
(rg-enable-default-bindings)&lt;/p&gt;
&lt;p&gt;is quite sufficient to work with rg and also have grep around.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;searchers&lt;/strong&gt; work only in the buffer and include C-s|r and M-x occur
which will make a buffer with links for the pattern, so it gives you the
same thing that search does, but in a separate buffer and with every
occurrence rather than forward C-s or reverse C-r.&lt;/p&gt;
&lt;h1 id=&#34;ibuffer&#34; class=&#34;anchor-header&#34;&gt;ibuffer &lt;a class=&#34;anchor-link&#34; href=&#34;#ibuffer&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Get in with C-x M-b&lt;/p&gt;
&lt;p&gt;Delete multiple buffers quickly&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;% n|m &amp;lt;&amp;gt; RET&lt;/li&gt;
&lt;li&gt;D y&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&#34;images&#34; class=&#34;anchor-header&#34;&gt;images &lt;a class=&#34;anchor-link&#34; href=&#34;#images&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Insert an image with&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#+CAPTION: This is the caption for the next figure link (or table)
#+NAME:   fig:SED-HR4049
[[./img/a.jpg]]
&lt;/code&gt;&lt;/pre&gt;
&lt;h1 id=&#34;junk-deposit-issue&#34; class=&#34;anchor-header&#34;&gt;junk deposit issue &lt;a class=&#34;anchor-link&#34; href=&#34;#junk-deposit-issue&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;emacs -nw producing [Ihello] and other junk on first line&lt;/p&gt;
&lt;p&gt;this is happening because of the line in init-modes.el&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-elisp&#34; data-lang=&#34;elisp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;sp-pair&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;[&amp;#34;&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;]&amp;#34;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;:wrap&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;M-[&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;other braces {} () don&amp;rsquo;t seem to have any issues&lt;/p&gt;
&lt;h1 id=&#34;key-unbind&#34; class=&#34;anchor-header&#34;&gt;key (un)bind &lt;a class=&#34;anchor-link&#34; href=&#34;#key-unbind&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;pre&gt;&lt;code&gt;(global-set-key (kbd &amp;quot;C-M-.&amp;quot;) &#39;eshell)
(global-unset-key (kbd &amp;quot;C-M-.&amp;quot;))
&lt;/code&gt;&lt;/pre&gt;
&lt;h1 id=&#34;lilypond&#34; class=&#34;anchor-header&#34;&gt;lilypond &lt;a class=&#34;anchor-link&#34; href=&#34;#lilypond&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id=&#34;qpdfview&#34; class=&#34;anchor-header&#34;&gt;qpdfview &lt;a class=&#34;anchor-link&#34; href=&#34;#qpdfview&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;open the pdf update in lilypond, then refresh with F5&lt;/p&gt;
&lt;h2 id=&#34;xpdf--open&#34; class=&#34;anchor-header&#34;&gt;xpdf -open &lt;a class=&#34;anchor-link&#34; href=&#34;#xpdf--open&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;this works quite well until it is unable for some reason to create a
remote socket. however, the problem can be nullified by: rm /tmp/default
which removes the socket process (i guess?) unfortunately, when
operating as a server, the textedit:// feature does not work as
effectively though you still get the line number of where you want to go
to in the .ly file.&lt;/p&gt;
&lt;h2 id=&#34;midi&#34; class=&#34;anchor-header&#34;&gt;midi &lt;a class=&#34;anchor-link&#34; href=&#34;#midi&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Lilypond-midi-player variable set to timidity|fluidsynth &lt;/p&gt;
&lt;h1 id=&#34;links&#34; class=&#34;anchor-header&#34;&gt;links &lt;a class=&#34;anchor-link&#34; href=&#34;#links&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;External links to webpages work fine, but internal links to headings
within the same page seem to be an issue when hugo exports them to html.&lt;/p&gt;
&lt;p&gt;To setup an internal link within a document:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;go to link and M-x org-store-link&lt;/li&gt;
&lt;li&gt;go to place to insert link and M-x org-insert-last-stored-link&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Such an arrangement works find inside orgmode, but hugo doesn&amp;rsquo;t manage
to export it correctly at present (2023-08-02).&lt;/p&gt;
&lt;h1 id=&#34;lsp&#34; class=&#34;anchor-header&#34;&gt;lsp &lt;a class=&#34;anchor-link&#34; href=&#34;#lsp&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;&lt;a href=&#34;https://emacs-lsp.github.io/lsp-mode/&#34;&gt;Language Server Protocol Support for
Emacs&lt;/a&gt; &lt;a href=&#34;https://www.mortens.dev/blog/emacs-and-the-language-server-protocol/&#34;&gt;Emacs and the Language
Server
Protocol&lt;/a&gt;&lt;/p&gt;
&lt;h1 id=&#34;notmuch&#34; class=&#34;anchor-header&#34;&gt;notmuch &lt;a class=&#34;anchor-link&#34; href=&#34;#notmuch&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;the idea will be to use search/tag rather than folders to get things
done&lt;/p&gt;
&lt;h2 id=&#34;setup&#34; class=&#34;anchor-header&#34;&gt;setup &lt;a class=&#34;anchor-link&#34; href=&#34;#setup&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;%notmuch setup -&amp;gt; ~/.notmuch-config used to have
.emacs.d/notmuch-config.el with mainly the Q binding, but that is now in
init-email.el&lt;/p&gt;
&lt;h2 id=&#34;starting&#34; class=&#34;anchor-header&#34;&gt;starting &lt;a class=&#34;anchor-link&#34; href=&#34;#starting&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;emacs -e &amp;ldquo;notmuch&amp;rdquo; with client it used to be different: emacsclient -e
&amp;ldquo;(elfeed)&amp;rdquo; -e &amp;ldquo;(notmuch)&amp;rdquo; &amp;amp; emacsclient -c ~/aa/aa.org &amp;amp;&lt;/p&gt;
&lt;h2 id=&#34;various-commands&#34; class=&#34;anchor-header&#34;&gt;various commands &lt;a class=&#34;anchor-link&#34; href=&#34;#various-commands&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;search|show|address|count reply tag dump|restore config&lt;/p&gt;
&lt;h2 id=&#34;html&#34; class=&#34;anchor-header&#34;&gt;html &lt;a class=&#34;anchor-link&#34; href=&#34;#html&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;(global-set-key (kbd &amp;ldquo;&amp;lt;f6&amp;gt;&amp;rdquo;) &amp;lsquo;org-mime-edit-mail-in-org-mode) use to
open a second window and write in orgmode C-c C-c will update orgified
buffer to the original&lt;/p&gt;
&lt;p&gt;(global-set-key (kbd &amp;ldquo;M-&amp;lt;f6&amp;gt;&amp;rdquo;) &amp;lsquo;org-mime-htmlize) htmlize the orgified
buffer before sending with C-c C-c (as before)&lt;/p&gt;
&lt;h2 id=&#34;searching&#34; class=&#34;anchor-header&#34;&gt;searching &lt;a class=&#34;anchor-link&#34; href=&#34;#searching&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;wildcards using &amp;lsquo;*&amp;rsquo; operators +|-|AND|NOT|XOR|OR| brackets
proximity NEAR ADJ phrases &amp;ldquo;Debian Project&amp;rdquo; &amp;lt;=&amp;gt; Debian ADJ/1 Project
prefix freeform idea, but uses full item eg from: instead of f: range
date:yr-mo-da..yr-mo-da | -5da..now | yesterday&lt;/p&gt;
&lt;p&gt;man notmuch-search-terms&lt;/p&gt;
&lt;h2 id=&#34;fetchtrash-mechanism&#34; class=&#34;anchor-header&#34;&gt;fetch/trash mechanism &lt;a class=&#34;anchor-link&#34; href=&#34;#fetchtrash-mechanism&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;use nmprg.sh) f|c|p|t&lt;/p&gt;
&lt;p&gt;f files are left on server but not duplicated c) fdm fetch will remove
them from server p) polls t) trash require &amp;lsquo;S&amp;rsquo; on emails then nmprg.sh t
moves them to ~/.trash&lt;/p&gt;
&lt;p&gt;be careful using c) because if you read using spark or whatever on the
server and leave the item as read, then using this removes them from the
server, but we&amp;rsquo;re not sure where the email actually goes! yes we are
now!!&lt;/p&gt;
&lt;p&gt;we must be sure that we are running nmp from ~/ otherwise mail/ will be
created wherever we are!&lt;/p&gt;
&lt;h2 id=&#34;autocomplete-email-addresses&#34; class=&#34;anchor-header&#34;&gt;autocomplete email addresses &lt;a class=&#34;anchor-link&#34; href=&#34;#autocomplete-email-addresses&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;chose to use bbdb and use bbdb-vcard with contacts.vcf exported from
google Go to &lt;a href=&#34;http://contacts.google.com&#34;&gt;http://contacts.google.com&lt;/a&gt;, click the menu
&amp;ldquo;Export…&amp;gt;&amp;gt;vCard format (blah, blah …)&amp;rdquo;. Click &amp;ldquo;Export&amp;rdquo; button.
Download the contacts.vcf into ~/Downloads then load into an emacs buffer and run&lt;/p&gt;
&lt;p&gt;bbdb-snarf-vcard-buffer&lt;/p&gt;
&lt;p&gt;Remember to save the bbdb buffer to .emacs.d/bbdb&lt;/p&gt;
&lt;h2 id=&#34;gnus-alias-to-select-identity&#34; class=&#34;anchor-header&#34;&gt;gnus-alias to select identity &lt;a class=&#34;anchor-link&#34; href=&#34;#gnus-alias-to-select-identity&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://notmuchmail.org/emacstips/#index16h2&#34;&gt;https://notmuchmail.org/emacstips/#index16h2&lt;/a&gt; didn&amp;rsquo;t set rules use M-x
gnus-alias-select-identity&lt;/p&gt;
&lt;h2 id=&#34;external-handlers-for-attachments&#34; class=&#34;anchor-header&#34;&gt;external handlers for attachments &lt;a class=&#34;anchor-link&#34; href=&#34;#external-handlers-for-attachments&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;w - to save the attachment - though the default doesn&amp;rsquo;t always seem to
work. . o allows reading the item provided you specify the type&lt;/p&gt;
&lt;h2 id=&#34;sending-email&#34; class=&#34;anchor-header&#34;&gt;sending email &lt;a class=&#34;anchor-link&#34; href=&#34;#sending-email&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id=&#34;evolution-removals&#34; class=&#34;anchor-header&#34;&gt;evolution removals &lt;a class=&#34;anchor-link&#34; href=&#34;#evolution-removals&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;for some reason, the setup for smtp wasn&amp;rsquo;t being picked up in the
init.el file and that is why evolution kept coming up. instead of
smtpmail-send-it the setting had changed to mailclient-send-it. this is
nice to know in case we should ever require it in the future.&lt;/p&gt;
&lt;p&gt;;; smtp (setq smtpmail-default-smtp-server &amp;ldquo;shawmail.gv.shawcable.net&amp;rdquo;
send-mail-function &amp;lsquo;smtpmail-send-it user-full-name &amp;ldquo;prad&amp;rdquo;
smtpmail-local-domain &amp;ldquo;towardsfreedom.com&amp;rdquo; user-mail-address
&amp;ldquo;&lt;a href=&#34;mailto:prad@towardsfreedom.com&#34;&gt;prad@towardsfreedom.com&lt;/a&gt;&amp;rdquo;) (require &amp;lsquo;smtpmail)&lt;/p&gt;
&lt;p&gt;otherwise it defaults to evolution because gnome sets it, though we can
change it to notmuch through settings.&lt;/p&gt;
&lt;h3 id=&#34;vivaldi-mail-issue&#34; class=&#34;anchor-header&#34;&gt;vivaldi mail issue &lt;a class=&#34;anchor-link&#34; href=&#34;#vivaldi-mail-issue&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;however, what is the problem replying to vivaldi? no issues sending to
vivaldi or replying to any other place it seems. changing the smtp to
&amp;ldquo;mail.towardsfreedom.com&amp;rdquo; sent, but still the same problem with replying
to vivaldi!&lt;/p&gt;
&lt;p&gt;&amp;lt;2021-06-21 Mon&amp;gt; we are sending &lt;a href=&#34;mailto:pradagio@vivaldi.net&#34;&gt;pradagio@vivaldi.net&lt;/a&gt; emails through
smtp.vivaldi.net because shawmail wouldn&amp;rsquo;t send (even though it appeared
to do so).&lt;/p&gt;
&lt;p&gt;2 items noted:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;gnus alias setup is sufficient (no need for msmtp) (&amp;ldquo;tf&amp;rdquo; nil ;; Does
not refer to any other identity &amp;ldquo;prad &amp;lt;prad@towardsfreedom.com&amp;gt;&amp;rdquo;
;; Sender address &amp;ldquo;towardsfreedom.com&amp;rdquo; ;; Organization header
((&amp;ldquo;X-Message-SMTP-Method&amp;rdquo; . &amp;ldquo;smtp smtp.towardsfreedom.com 587&amp;rdquo;)) nil
;; extra body text &amp;ldquo;&lt;del&gt;/.signature&amp;rdquo;) (&amp;ldquo;fm&amp;rdquo; ;;formal tf nil &amp;ldquo;prad basu
&amp;lt;prad@towardsfreedom.com&amp;gt;&amp;rdquo; &amp;ldquo;prad basu&amp;rdquo; ;; Organization header
((&amp;ldquo;X-Message-SMTP-Method&amp;rdquo; . &amp;ldquo;smtp smtp.towardsfreedom.com 587&amp;rdquo;)) nil
;; No extra body text &amp;ldquo;&lt;/del&gt;/.signature.fm&amp;rdquo;) (&amp;ldquo;vv&amp;rdquo; nil &amp;ldquo;prad
&amp;lt;pradagio@vivaldi.net&amp;gt;&amp;rdquo; &amp;ldquo;prader&amp;rdquo; ;; Organization header
((&amp;ldquo;X-Message-SMTP-Method&amp;rdquo; . &amp;ldquo;smtp smtp.vivaldi.net 587&amp;rdquo;)) nil ;; No
extra body text &amp;ldquo;~/.signature.vv&amp;rdquo;) )&lt;/li&gt;
&lt;li&gt;mail-host-address (setq mail-host-address &amp;ldquo;localhost&amp;rdquo;) couldn&amp;rsquo;t
figure out how to change it via smtp on gnus-alias, but that&amp;rsquo;s
probably not important however, we need this to prevent Message ID
&amp;lt;87lf72na5y.fsf@schnell.i-did-not-set–mail-host-address–so-tickle-me&amp;gt;
doing (&amp;ldquo;Message-ID&amp;rdquo; . &amp;ldquo;towardsfreedom.com&amp;rdquo;) didn&amp;rsquo;t work though it
did get the item in there. receiving end produced: Message ID
&amp;lt;60d15486.1c69fb81.90dc4.e612SMTPIN_ADDEDBROKEN&lt;/sub&gt;@mx.google.com&amp;gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;still getting a spf softfail: send from vivaldi -&amp;gt; tf reply from tf -&amp;gt;
vivaldi don&amp;rsquo;t know why, but it probably doesn&amp;rsquo;t matter.&lt;/p&gt;
&lt;p&gt;also unclear why .authinfo required vivaldi smtp info but nothing for tf&lt;/p&gt;
&lt;h1 id=&#34;orgmode&#34; class=&#34;anchor-header&#34;&gt;orgmode &lt;a class=&#34;anchor-link&#34; href=&#34;#orgmode&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;&lt;a href=&#34;https://orgmode.org&#34;&gt;manual&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;org-macros&#34; class=&#34;anchor-header&#34;&gt;org macros &lt;a class=&#34;anchor-link&#34; href=&#34;#org-macros&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/fniessen/org-macros/blob/master/README.org&#34;&gt;github
link&lt;/a&gt; The
macros in Org allow you to add text or code to an Org document that will
be expanded during export: the text between the 3 pairs of accolades is
expanded so that readers can see it in the exported versions of the
document.&lt;/p&gt;
&lt;p&gt;Some people (such as me) use it to construct complex HTML or LaTeX code.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://orgmode.org/manual/Macro-Replacement.html#Macro-replacement&#34;&gt;13.5 Macro
Replacement&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;the-file-issue-with-org-agenda-files&#34; class=&#34;anchor-header&#34;&gt;the .#file issue with org-agenda-files &lt;a class=&#34;anchor-link&#34; href=&#34;#the-file-issue-with-org-agenda-files&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;When that variable is set to ~/aa/*.org various files within the aa
directory kept appearing making cycling awkward. We haven&amp;rsquo;t found out
why though the problem started around &amp;lt;2023-07-22 Sat&amp;gt; for some
reason. Possibly, having the default ~/org directory would have caused
those files to end up there (which really isn&amp;rsquo;t the best solution).
Setting the default org-directory to aa seems to have worked albeit the
idea is pretty counter-intuitive.&lt;/p&gt;
&lt;h2 id=&#34;org-agenda&#34; class=&#34;anchor-header&#34;&gt;org agenda &lt;a class=&#34;anchor-link&#34; href=&#34;#org-agenda&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Cycle the org agenda directory with C-&amp;rsquo; (which seems to be a default
setup). packages&lt;/p&gt;
&lt;h2 id=&#34;melpa-vs-melpa-stable&#34; class=&#34;anchor-header&#34;&gt;melpa vs melpa-stable &lt;a class=&#34;anchor-link&#34; href=&#34;#melpa-vs-melpa-stable&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Packages are identified when we look at M-x package-list-packages&lt;/p&gt;
&lt;h2 id=&#34;update-packages&#34; class=&#34;anchor-header&#34;&gt;update packages &lt;a class=&#34;anchor-link&#34; href=&#34;#update-packages&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;M-x list-packages and it will automatically refresh the archive
contents.&lt;/p&gt;
&lt;p&gt;Then, press U to mark all upgradable packages to be upgraded.&lt;/p&gt;
&lt;p&gt;Last, press x to perform the new updates.&lt;/p&gt;
&lt;p&gt;Emacs will then download and install all upgradable packages. It will
also ask you whether to delete the old packages: M-x package-autoremove&lt;/p&gt;
&lt;p&gt;Doing it this way seems better than package-refresh-contents
package-install (if package-reinstall doesn&amp;rsquo;t work)&lt;/p&gt;
&lt;h2 id=&#34;table&#34; class=&#34;anchor-header&#34;&gt;table &lt;a class=&#34;anchor-link&#34; href=&#34;#table&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;If ; isn&amp;rsquo;t a separator by default: C-u C-u C-u C-c | ; RET&lt;/p&gt;
&lt;h1 id=&#34;package&#34; class=&#34;anchor-header&#34;&gt;package &lt;a class=&#34;anchor-link&#34; href=&#34;#package&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id=&#34;removing-packages&#34; class=&#34;anchor-header&#34;&gt;removing packages &lt;a class=&#34;anchor-link&#34; href=&#34;#removing-packages&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;To remove unnecessary or unwanted packages in Emacs, follow these steps:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Open Emacs.&lt;/li&gt;
&lt;li&gt;Press `M-x` (Alt + x) to invoke the command prompt.&lt;/li&gt;
&lt;li&gt;Type `package-list-packages` and press Enter.&lt;/li&gt;
&lt;li&gt;In the &lt;strong&gt;Packages&lt;/strong&gt; buffer, locate the packages you want to remove.&lt;/li&gt;
&lt;li&gt;Mark them for deletion by pressing `d` (package-menu-mark-delete).&lt;/li&gt;
&lt;li&gt;Execute the deletion by pressing `x` (package-menu-execute).&lt;/li&gt;
&lt;li&gt;Confirm the removal when prompted in the mini-buffer.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This process will remove the actual files associated with the packages
from the `~/.emacs.d/elpa` directory¹. Happy cleaning! 🧹🚀&lt;/p&gt;
&lt;p&gt;Source: Conversation with Copilot, 6/18/2024 (1) How to remove an
installed package in Emacs (ver 24+)?.
&lt;a href=&#34;https://stackoverflow.com/questions/16469600/how-to-remove-an-installed-package-in-emacs-ver-24&#34;&gt;https://stackoverflow.com/questions/16469600/how-to-remove-an-installed-package-in-emacs-ver-24&lt;/a&gt;.
(2) uninstallation - How remove emacs full? - Stack Overflow.
&lt;a href=&#34;https://stackoverflow.com/questions/57895073/how-remove-emacs-full&#34;&gt;https://stackoverflow.com/questions/57895073/how-remove-emacs-full&lt;/a&gt;.
(3) Package Menu (GNU Emacs Manual).
&lt;a href=&#34;https://www.gnu.org/software/emacs/manual/html_node/emacs/Package-Menu.html&#34;&gt;https://www.gnu.org/software/emacs/manual/html_node/emacs/Package-Menu.html&lt;/a&gt;.
(4) apt - how to uninstall emacs from command line? - Ask Ubuntu.
&lt;a href=&#34;https://askubuntu.com/questions/604733/how-to-uninstall-emacs-from-command-line&#34;&gt;https://askubuntu.com/questions/604733/how-to-uninstall-emacs-from-command-line&lt;/a&gt;.
(5) Uninstalling a package and all of its dependencies - Emacs Stack
Exchange.
&lt;a href=&#34;https://emacs.stackexchange.com/questions/31888/uninstalling-a-package-and-all-of-its-dependencies&#34;&gt;https://emacs.stackexchange.com/questions/31888/uninstalling-a-package-and-all-of-its-dependencies&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;update-packages-1&#34; class=&#34;anchor-header&#34;&gt;update packages &lt;a class=&#34;anchor-link&#34; href=&#34;#update-packages-1&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Certainly! To update packages in Emacs, follow these steps:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Open Emacs.&lt;/li&gt;
&lt;li&gt;Type `M-x list-packages` and press Enter. This command lists all
installed packages and automatically refreshes the package archive
contents.&lt;/li&gt;
&lt;li&gt;In the &lt;strong&gt;Packages&lt;/strong&gt; buffer, press `U` to mark all upgradable
packages.&lt;/li&gt;
&lt;li&gt;Finally, press `x` to perform the updates. Emacs will download and
install the new versions of the packages. It will also prompt you to
delete the old packages if necessary¹².&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Happy updating! 🚀🔧&lt;/p&gt;
&lt;p&gt;Source: Conversation with Copilot, 6/18/2024 (1) elpa - Updating
packages in Emacs - Stack Overflow.
&lt;a href=&#34;https://stackoverflow.com/questions/14836958/updating-packages-in-emacs&#34;&gt;https://stackoverflow.com/questions/14836958/updating-packages-in-emacs&lt;/a&gt;.
(2) How to upgrade packages installed by ELPA in Emacs?.
&lt;a href=&#34;https://www.systutorials.com/how-to-upgrade-packages-installed-by-elpa-in-emacs/&#34;&gt;https://www.systutorials.com/how-to-upgrade-packages-installed-by-elpa-in-emacs/&lt;/a&gt;.
(3) Keeping Your Emacs Packages Up to Date - System Crafters.
&lt;a href=&#34;https://systemcrafters.net/emacs-from-scratch/keeping-your-packages-up-to-date/&#34;&gt;https://systemcrafters.net/emacs-from-scratch/keeping-your-packages-up-to-date/&lt;/a&gt;.
(4) How to update packages installed with use-package.
&lt;a href=&#34;https://emacs.stackexchange.com/questions/31872/how-to-update-packages-installed-with-use-package&#34;&gt;https://emacs.stackexchange.com/questions/31872/how-to-update-packages-installed-with-use-package&lt;/a&gt;.
(5) undefined. &lt;a href=&#34;http://tromey.com/elpa/&#34;&gt;http://tromey.com/elpa/&lt;/a&gt;. (6) undefined.
&lt;a href=&#34;http://elpa.gnu.org/packages/&#34;&gt;http://elpa.gnu.org/packages/&lt;/a&gt;. (7) undefined.
&lt;a href=&#34;http://marmalade-repo.org/packages/&#34;&gt;http://marmalade-repo.org/packages/&lt;/a&gt;. (8) undefined.
&lt;a href=&#34;http://melpa.milkbox.net/packages/&#34;&gt;http://melpa.milkbox.net/packages/&lt;/a&gt;.&lt;/p&gt;
&lt;h1 id=&#34;profiler&#34; class=&#34;anchor-header&#34;&gt;profiler &lt;a class=&#34;anchor-link&#34; href=&#34;#profiler&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Option 2: The profiler&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Invoke M-x profiler-start RET RET (the second RET is to confirm
cpu);&lt;/li&gt;
&lt;li&gt;Do some typing, preferably an entire paragraph or more;&lt;/li&gt;
&lt;li&gt;Invoke M-x profiler-report.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;That will give you a buffer describing the cpu time taken by each
function. Hitting TAB on a line expands it to display the functions
inside it. Navigate this buffer until you find out which function is
taking so much CPU time.
&lt;a href=&#34;https://emacs.stackexchange.com/questions/5359/how-can-i-troubleshoot-a-very-slow-emacs&#34;&gt;https://emacs.stackexchange.com/questions/5359/how-can-i-troubleshoot-a-very-slow-emacs&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;we tried this to figure out AC mode was slowing things down, but we
already knew that. Not sure what to do about it though.&lt;/p&gt;
&lt;h1 id=&#34;pinky-solution&#34; class=&#34;anchor-header&#34;&gt;pinky solution &lt;a class=&#34;anchor-link&#34; href=&#34;#pinky-solution&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;One way of not injuring the left pinky even after making CAPS into CTRL
is to use different fingers to push it. That way the usage is
distributed and the hands move around more too.&lt;/p&gt;
&lt;h1 id=&#34;todo-regexp&#34; class=&#34;anchor-header&#34;&gt;&lt;span class=&#34;todo TODO&#34;&gt;TODO&lt;/span&gt; regexp &lt;a class=&#34;anchor-link&#34; href=&#34;#todo-regexp&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Likely not worth paying in-depth attention to since it is not pcre.
However, some of the uses can be helpful especially for simple things.&lt;/p&gt;
&lt;h1 id=&#34;search-file-system&#34; class=&#34;anchor-header&#34;&gt;search file system &lt;a class=&#34;anchor-link&#34; href=&#34;#search-file-system&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/Overdr0ne/sfs/tree/master#readme&#34;&gt;SFS&lt;/a&gt; is a
collection of inter-operating emacs tools to make accessing and
organizing your data faster and more ergonomic. It is largely powered by
the Recoll file-indexing tool.&lt;/p&gt;
&lt;p&gt;This may be worth pursuing eventually !!!&lt;/p&gt;
&lt;h1 id=&#34;sessions&#34; class=&#34;anchor-header&#34;&gt;sessions &lt;a class=&#34;anchor-link&#34; href=&#34;#sessions&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Use the default M-x save-sessions to ~/.emacs.d/session-buffers to get all back. Sometimes certain buffers get persistent because session-buffers keeps them, so delete the buffers and save-session again.&lt;/p&gt;
&lt;h1 id=&#34;smartparens&#34; class=&#34;anchor-header&#34;&gt;smartparens &lt;a class=&#34;anchor-link&#34; href=&#34;#smartparens&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;&lt;a href=&#34;https://smartparens.readthedocs.io/en/latest/pair-management.htm&#34;&gt;Pair
management&lt;/a&gt;
haven&amp;rsquo;t been able to deal with ~~ and // in org-mode yet !!!&lt;/p&gt;
&lt;h1 id=&#34;spellcheck&#34; class=&#34;anchor-header&#34;&gt;spellcheck &lt;a class=&#34;anchor-link&#34; href=&#34;#spellcheck&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;be sure aspell or whatever is installed. M-$&lt;br&gt;
Check and correct spelling of the word at point (ispell-word). If the
region is active, do it for all words in the region instead.&lt;/p&gt;
&lt;p&gt;M-x ispell&lt;br&gt;
Check and correct spelling of all words in the buffer. If the region is
active, do it for all words in the region instead.&lt;/p&gt;
&lt;p&gt;M-x ispell-buffer&lt;br&gt;
Check and correct spelling in the buffer.&lt;/p&gt;
&lt;p&gt;M-x ispell-region&lt;br&gt;
Check and correct spelling in the region.&lt;/p&gt;
&lt;h1 id=&#34;tab-bar&#34; class=&#34;anchor-header&#34;&gt;tab-bar &lt;a class=&#34;anchor-link&#34; href=&#34;#tab-bar&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Likely not of much use since we tend to prefer buffers anyway.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-elisp&#34; data-lang=&#34;elisp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;C-x&lt;/span&gt; &lt;span class=&#34;no&#34;&gt;t&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;creates&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;a&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;tab&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;C-tab&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;next&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;tab&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;C-S-tab&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;prev&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;tab&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;C-x&lt;/span&gt; &lt;span class=&#34;no&#34;&gt;t&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;r&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;rename&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;tab&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;C-x&lt;/span&gt; &lt;span class=&#34;no&#34;&gt;t&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;m&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;move&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;tab&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;to&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;right&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;C-x&lt;/span&gt; &lt;span class=&#34;no&#34;&gt;t&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;RET&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;select&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;tab&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;by&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;name&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;M-x&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;tab-list&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;list&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;tabs&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id=&#34;tab-completion&#34; class=&#34;anchor-header&#34;&gt;tab completion &lt;a class=&#34;anchor-link&#34; href=&#34;#tab-completion&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Setup in init-keybindings.el with (require &amp;lsquo;helm) (define-key helm-map
(kbd &amp;ldquo;TAB&amp;rdquo;) &amp;lsquo;helm-execute-persistent-action)&lt;/p&gt;
&lt;h1 id=&#34;terminals&#34; class=&#34;anchor-header&#34;&gt;terminals &lt;a class=&#34;anchor-link&#34; href=&#34;#terminals&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;The ansi-term gives colors, but term doesn&amp;rsquo;t. C-c C-j linemode to use
M-x&lt;/p&gt;
&lt;p&gt;Code runs ansi-term without the zsh prompt:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-elisp&#34; data-lang=&#34;elisp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;;; use ansi-term with zsh&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;defun&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;zterm&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;s&#34;&gt;&amp;#34;term to use zsh&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;interactive&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;ansi-term&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;zsh&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;M-&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;s-a&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;close&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;open&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;terminal&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;second&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;window&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;;; other terms&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;s-&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;#39;&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;ansi-term&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;full&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;window&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;s-.&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;eshell&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;s-y&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;term&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;with&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;zsh&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;likely&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;to&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;use&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;very&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;rarely&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;There is nothing wrong in allowing ansi-terms to accumulate even if we
do not go back to them, though we might if they are involved in specific
tasks. In order to name the ansi-terms we need to go into line-mode (C-c
C-j) and not character-mode (C-c C-k), so we can use M-x rename-buffer.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;In line mode, it reads an entire line and permits various emacs
editing operations on it, then sends it to the process all at once
when you&amp;rsquo;re done (press Enter). In char mode, each character is sent
through as soon as you press the key - dealing with lines, editing,
and so on is up to the process running in the terminal, such as your
shell.&lt;/p&gt;
&lt;p&gt;Why might you want to use one over the other? Line mode allows you to
perform Emacs editing operations on what you write, to accumulate
multiple lines to send through at once, and to perform tab completion
of filenames in Emacs. See the list of commands in shell mode for
details. Character mode lets you use all the features of the
underlying process, like its own (likely better) tab completion,
rather than the Emacs operations, and also to send through inputs that
Emacs would have interpreted as referring to its own commands (like
Ctrl-X). This is also the mode you&amp;rsquo;d want if you wanted to run vim
inside emacs.&lt;/p&gt;
&lt;p&gt;An ordinary terminal operates in the equivalent of character mode.
&lt;a href=&#34;https://unix.stackexchange.com/questions/148581/in-emacs-term-mode-what-is-char-mode-and-line-mode-how-do-they-differ&#34;&gt;Line-mode vs Character-mode
explanation&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Clean-up of ansi-terms can be done in the same way as clean-up of
sent-mail buffers: % n RET &amp;lt;pattern&amp;gt; marks the buffers by name after
which use D to delete them. See 





    
    &lt;img src=&#34;*ibuffer&#34; alt=&#34;*ibuffer&#34;&gt;

.&lt;/p&gt;
&lt;p&gt;Macros have been created for &amp;lsquo;aterm s-a &amp;lsquo;aterm-rm M-s-a&lt;/p&gt;
&lt;p&gt;For some reason, aterm does not let M-x to work - get execute: showing
up in the window. Usually we would M-x to rename-buffer, but a shortcut
exists: C-x x r and that will bring up the rename-buffer command.&lt;/p&gt;
&lt;h1 id=&#34;themes&#34; class=&#34;anchor-header&#34;&gt;themes &lt;a class=&#34;anchor-link&#34; href=&#34;#themes&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;(add-to-list &amp;lsquo;custom-theme-load-path &amp;ldquo;~/.emacs.d/themes/&amp;rdquo;) M-x
customize-themes&lt;/p&gt;
&lt;h1 id=&#34;tramp&#34; class=&#34;anchor-header&#34;&gt;tramp &lt;a class=&#34;anchor-link&#34; href=&#34;#tramp&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;We can use ssh|sudo from rootdir with // and once we tramp into another
computer the eshell works there (should we want it to).&lt;/p&gt;
&lt;h2 id=&#34;hanging-with-ssh&#34; class=&#34;anchor-header&#34;&gt;hanging with ssh &lt;a class=&#34;anchor-link&#34; href=&#34;#hanging-with-ssh&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://www.emacswiki.org/emacs/TrampMode&#34;&gt;https://www.emacswiki.org/emacs/TrampMode&lt;/a&gt; put in the remote .zshrc&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;[[&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$TERM&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;dumb&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;]]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; unsetopt zle &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;PS1&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;$ &amp;#39;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;this is a zsh issue because people have said that when the switch to
bash it all works.&lt;/p&gt;
&lt;p&gt;&amp;lt;2023-09-22 Fri&amp;gt; stopped working for some reason, but a better
solution is to use sshx which uses /bin/sh instead of zsh&lt;/p&gt;
&lt;h2 id=&#34;ssh-with-sudo&#34; class=&#34;anchor-header&#34;&gt;ssh with sudo &lt;a class=&#34;anchor-link&#34; href=&#34;#ssh-with-sudo&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;C-x C-f /ssh:psinom::sudo:psinom:&lt;FILE&gt;&lt;/p&gt;
&lt;h1 id=&#34;variables&#34; class=&#34;anchor-header&#34;&gt;variables &lt;a class=&#34;anchor-link&#34; href=&#34;#variables&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id=&#34;shell-mode-map-is-void&#34; class=&#34;anchor-header&#34;&gt;shell-mode-map is void &lt;a class=&#34;anchor-link&#34; href=&#34;#shell-mode-map-is-void&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;shell-mode-map is a variable that is defined in the file shell.el which
is not loaded yet, so the variable is undefined.&lt;/p&gt;
&lt;p&gt;(require &amp;lsquo;shell) before you try use the variable.
&lt;a href=&#34;https://emacs.stackexchange.com/questions/44920/when-i-start-emacs-symbols-value-as-variable-is-void-shell-mode-map&#34;&gt;post&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;save-and-apply&#34; class=&#34;anchor-header&#34;&gt;save and apply &lt;a class=&#34;anchor-link&#34; href=&#34;#save-and-apply&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;This can be done through the emacs customize menu, but to do alter a
variable permanently through the minibuffer, use M-x customize-&lt;/p&gt;
&lt;h1 id=&#34;vc&#34; class=&#34;anchor-header&#34;&gt;vc &lt;a class=&#34;anchor-link&#34; href=&#34;#vc&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;A “version control system” is a program that can record multiple
versions of a source file, storing information such as the creation time
of each version, who made it, and a description of what was changed.
Emacs VC supports git and several others and is enabled whenever a file
under VC is visited.&lt;/p&gt;
&lt;p&gt;Commands reachable with prefix C-x v &amp;lt;tab&amp;gt;&lt;/p&gt;
&lt;p&gt;Much more to investigate !!!&lt;/p&gt;
&lt;h1 id=&#34;zz-2&#34; class=&#34;anchor-header&#34;&gt;zz &lt;a class=&#34;anchor-link&#34; href=&#34;#zz-2&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id=&#34;agenda-cycling-extra-buffers&#34; class=&#34;anchor-header&#34;&gt;agenda cycling extra buffers &lt;a class=&#34;anchor-link&#34; href=&#34;#agenda-cycling-extra-buffers&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Cycling through the agenda dir sometimes produces empty buffers of the
same name starting with .# and we think this may be because extra files
of the same name somehow get created. Deleting the buffers doesn&amp;rsquo;t get
rid of them, because they keep coming back. However, if we M-x
reload-dot-emacs after deleting them, the problem goes away.&lt;/p&gt;
&lt;h2 id=&#34;issue-with-i--on-first-word&#34; class=&#34;anchor-header&#34;&gt;issue with [I ] on first word &lt;a class=&#34;anchor-link&#34; href=&#34;#issue-with-i--on-first-word&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;we don&amp;rsquo;t really know what the problem is though it seems to have
something to do with the &lt;a href=&#34;https://bbs.archlinux.org/viewtopic.php?id=271489&#34;&gt;TERM
variable&lt;/a&gt;. it occurs
with emacs -nw, but not with sudo emacs -nw probably because at the time
this was written, there was no .emacs in /root as evidenced by a
solution which works with emacs -nw -Q.&lt;/p&gt;
&lt;p&gt;What does work if using gnome-terminal is TERM=gnome-256color&lt;/p&gt;
&lt;h2 id=&#34;enter-giving-wrong-type-argument-stringp-nil&#34; class=&#34;anchor-header&#34;&gt;enter giving Wrong type argument: stringp, nil &lt;a class=&#34;anchor-link&#34; href=&#34;#enter-giving-wrong-type-argument-stringp-nil&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;inserting the doc with C-x C-i didn&amp;rsquo;t work hopefully copying the items
one by one will we will also leave orgmode to its own file&lt;/p&gt;
&lt;h2 id=&#34;close-help-window-without-going-to-it&#34; class=&#34;anchor-header&#34;&gt;close help window without going to it &lt;a class=&#34;anchor-link&#34; href=&#34;#close-help-window-without-going-to-it&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;(setq help-window-select t) that way when using q, it closes the help
window since it is already there.&lt;/p&gt;
&lt;h2 id=&#34;re-able-window&#34; class=&#34;anchor-header&#34;&gt;re-able window &lt;a class=&#34;anchor-link&#34; href=&#34;#re-able-window&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;C-z isn&amp;rsquo;t nil (the keybind is commented). It seems to sort of disable
the window, but going to another emacsclient window re-activates the
cursor. With a standalone emacs, clicking on the menu brings it back.&lt;/p&gt;
&lt;h2 id=&#34;read-only-toggle&#34; class=&#34;anchor-header&#34;&gt;read-only toggle &lt;a class=&#34;anchor-link&#34; href=&#34;#read-only-toggle&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;C-x C-q&lt;/p&gt;
&lt;h2 id=&#34;block-commenting-trick&#34; class=&#34;anchor-header&#34;&gt;block commenting trick &lt;a class=&#34;anchor-link&#34; href=&#34;#block-commenting-trick&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;we don&amp;rsquo;t really need this since emacs is setup with C-M-c and C-M-S-c
for comments&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;: &lt;span class=&#34;s1&#34;&gt;&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;This is a
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;very neat comment
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;in bash
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;This is outside the commented block&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Executing the above code would result in: This is outside the commented
block
&lt;a href=&#34;https://stackoverflow.com/questions/947897/block-comments-in-a-shell-script&#34;&gt;https://stackoverflow.com/questions/947897/block-comments-in-a-shell-script&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;uses&#34; class=&#34;anchor-header&#34;&gt;uses &lt;a class=&#34;anchor-link&#34; href=&#34;#uses&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;coding
&lt;ul&gt;
&lt;li&gt;clj&lt;/li&gt;
&lt;li&gt;zsh&lt;/li&gt;
&lt;li&gt;php&lt;/li&gt;
&lt;li&gt;openscad&lt;/li&gt;
&lt;li&gt;html&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;email&lt;/li&gt;
&lt;li&gt;writing
&lt;ul&gt;
&lt;li&gt;stories&lt;/li&gt;
&lt;li&gt;librettos&lt;/li&gt;
&lt;li&gt;papers&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;lilypond&lt;/li&gt;
&lt;li&gt;orgmode&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    
    <item>
      <title>Shell</title>
      <link>http://towardsfreedom.com/ithngys/services/website-design-hosting/tfold/tfzen/iknotes/computing/shell/</link>
      <pubDate>Tue, 08 Feb 2022 22:18:26 -0800</pubDate>
      <guid>http://towardsfreedom.com/ithngys/services/website-design-hosting/tfold/tfzen/iknotes/computing/shell/</guid>
      <description>&lt;p&gt;We use the z shell and program in
&lt;a href=&#34;https://zsh.sourceforge.io/Doc/Release/zsh_toc.html&#34;&gt;zsh&lt;/a&gt;. All items in
.zsh.d with .zshenv and .zshrc symlinked. This setup is easily migrated
to other machines. The items below illustrate various shell commands
some which are specific to zsh.&lt;/p&gt;
&lt;h1 id=&#34;adding-bin-to-path&#34; class=&#34;anchor-header&#34;&gt;adding ~/bin to PATH &lt;a class=&#34;anchor-link&#34; href=&#34;#adding-bin-to-path&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;### PATH ### typeset -U path #converts to uppercase (to avoid
accidental duplication as per bing) path+=~/bin&lt;/p&gt;
&lt;h1 id=&#34;alternate-expressions&#34; class=&#34;anchor-header&#34;&gt;alternate expressions &lt;a class=&#34;anchor-link&#34; href=&#34;#alternate-expressions&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ls *glob*.&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;txt&lt;span class=&#34;p&#34;&gt;|&lt;/span&gt;h&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;#note use of ()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# *glob*.txt and *glob*.h&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id=&#34;block-commenting&#34; class=&#34;anchor-header&#34;&gt;block commenting &lt;a class=&#34;anchor-link&#34; href=&#34;#block-commenting&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Though it is unlikely we will actually use this technique, it is handy
to know.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;this is a block comment&amp;#34;&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;: &lt;span class=&#34;s1&#34;&gt;&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;    what is this
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;    actually
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s1&#34;&gt;    &amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id=&#34;capitalizations&#34; class=&#34;anchor-header&#34;&gt;capitalizations &lt;a class=&#34;anchor-link&#34; href=&#34;#capitalizations&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;All cap specific words in a file using perl|sed. Note that single
quotes may work with sed, but not produce desired result with perl.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# perl&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;perl -pi -e &lt;span class=&#34;s2&#34;&gt;&amp;#34;s/(Eliphas|Retha|Chastity)/\U&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$1&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;/g&amp;#34;&lt;/span&gt; &amp;lt;filename&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; n in  Chastity Retha Eliphas&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;do&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;# or using loop&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    perl -i -pe &lt;span class=&#34;s2&#34;&gt;&amp;#34;s/&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$n&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;/\U&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$n&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;/g&amp;#34;&lt;/span&gt; &amp;lt;filename&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;done&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# sed&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; n in Cytheri Vaishob Chastity Retha Eliphas&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;do&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        sed -i &lt;span class=&#34;s2&#34;&gt;&amp;#34;s/&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$n&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(U)n&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;/g&amp;#34;&lt;/span&gt; &amp;lt;filename&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;done&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id=&#34;compinstall&#34; class=&#34;anchor-header&#34;&gt;compinstall &lt;a class=&#34;anchor-link&#34; href=&#34;#compinstall&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;&lt;a href=&#34;https://unix.stackexchange.com/questions/487607/what-does-zstyle-compinstall-filename-do&#34;&gt;What does zstyle :compinstall filename
do?&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s for when you run compinstall again. It lets compinstall find where
it has written out zstyle statements for you last time. This way, you
can run compinstall again to update them. &lt;a href=&#34;https://github.com/zsh-users/zsh/blob/master/Completion/compinstall#L52&#34;&gt;Read in source
code.&lt;/a&gt;&lt;/p&gt;
&lt;h1 id=&#34;concat-csv&#34; class=&#34;anchor-header&#34;&gt;concat csv &lt;a class=&#34;anchor-link&#34; href=&#34;#concat-csv&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Here are some ways to concat text files.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ls -1 *.csv &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;while&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;read&lt;/span&gt; filnam &lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;do&lt;/span&gt; cat &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$filnam&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &amp;gt;&amp;gt; output.csv.file&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;done&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ls -1 *.csv &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; sort &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;while&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;read&lt;/span&gt; filnam &lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;do&lt;/span&gt; cat &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$filnam&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &amp;gt;&amp;gt; output.csv.file&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;done&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ls -1t *.csv &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;while&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;read&lt;/span&gt; filnam &lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;do&lt;/span&gt; cat &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$filnam&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &amp;gt;&amp;gt; output.csv.file&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;done&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id=&#34;config-files&#34; class=&#34;anchor-header&#34;&gt;config files &lt;a class=&#34;anchor-link&#34; href=&#34;#config-files&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;.zshrc - Should be used for the shell configuration and for executing
commands.&lt;/li&gt;
&lt;li&gt;.zshenv - Should only contain user’s environment variables.&lt;/li&gt;
&lt;li&gt;.zprofile - Can be used to execute commands just after logging in.&lt;/li&gt;
&lt;li&gt;.zlogin - Can be used as .zprofile, but read just after .zshrc.&lt;/li&gt;
&lt;li&gt;.zlogout - Can be used to execute commands when a shell exit.&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&#34;cp&#34; class=&#34;anchor-header&#34;&gt;cp &lt;a class=&#34;anchor-link&#34; href=&#34;#cp&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id=&#34;replace-softlinks-with-actual-file&#34; class=&#34;anchor-header&#34;&gt;replace softlinks with actual file &lt;a class=&#34;anchor-link&#34; href=&#34;#replace-softlinks-with-actual-file&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cp --remove-destination &lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;readlink &amp;lt;filename&amp;gt;&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt; &amp;lt;filename&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; f in &lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;find -type l&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;do&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;# or do all softlinks&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    cp --remove-destination &lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;readlink &lt;span class=&#34;nv&#34;&gt;$f&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$f&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;done&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id=&#34;direct-ls-output-to-array&#34; class=&#34;anchor-header&#34;&gt;direct ls output to array &lt;a class=&#34;anchor-link&#34; href=&#34;#direct-ls-output-to-array&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;arr&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=(&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;ls&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# parsing ls is not a good idea usually so&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;arr&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=(&lt;/span&gt;*&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# if there are subdirectories&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;shopt&lt;/span&gt; -s nullglob
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;array&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=(&lt;/span&gt;*/&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;shopt&lt;/span&gt; -u nullglob &lt;span class=&#34;c1&#34;&gt;# Turn off nullglob to make sure it doesn&amp;#39;t interfere with anything later&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;array&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[@]&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;  &lt;span class=&#34;c1&#34;&gt;# Note double-quotes to avoid extra parsing of funny characters in filenames&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;See &lt;a href=&#34;https://stackoverflow.com/questions/18884992/how-do-i-assign-ls-to-an-array-in-linux-bash&#34;&gt;How do I assign ls to
array&lt;/a&gt;
discussion.&lt;/p&gt;
&lt;h1 id=&#34;docs-for-zmv-zcp-zln&#34; class=&#34;anchor-header&#34;&gt;docs for zmv, zcp, zln: &lt;a class=&#34;anchor-link&#34; href=&#34;#docs-for-zmv-zcp-zln&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;h1 id=&#34;docs-packit-book-scripting&#34; class=&#34;anchor-header&#34;&gt;docs packit book scripting &lt;a class=&#34;anchor-link&#34; href=&#34;#docs-packit-book-scripting&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;this book contains a lot of useful stuff&lt;/p&gt;
&lt;h2 id=&#34;zle-ch3&#34; class=&#34;anchor-header&#34;&gt;zle (ch3) &lt;a class=&#34;anchor-link&#34; href=&#34;#zle-ch3&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Emacs users will find themselves at home with the Esc + X sequence. we
can use where-is to find an alternative shortcut man zshzle has lots!&lt;/p&gt;
&lt;h2 id=&#34;globbing-ch4&#34; class=&#34;anchor-header&#34;&gt;globbing (ch4) &lt;a class=&#34;anchor-link&#34; href=&#34;#globbing-ch4&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;the negations ^,~ and alternates (|),[] need work&lt;/p&gt;
&lt;p&gt;tilde echo b*&lt;del&gt;*.o match starting with b, don&amp;rsquo;t match anything with o
extension echo a*&lt;/del&gt;*9.* match starting with a, don&amp;rsquo;t match anything
with 9 before the . echo a*&lt;del&gt;*9?.* match starting with a, don&amp;rsquo;t match
anything with 9 one item before . echo &lt;strong&gt;*/&lt;/strong&gt;.sh&lt;/del&gt;tmp/* exclude
anything within tmp/&lt;/p&gt;
&lt;p&gt;qualifiers cheatsheet *(…) TAB *(@) symlinks *(On) reverse sort by
name *(.) files only *(@,/) symlinks or directories&lt;/p&gt;
&lt;h2 id=&#34;todo-things-to-do&#34; class=&#34;anchor-header&#34;&gt;&lt;span class=&#34;todo TODO&#34;&gt;TODO&lt;/span&gt; things to do &lt;a class=&#34;anchor-link&#34; href=&#34;#todo-things-to-do&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;zcalc zargs man zshexpn&lt;/p&gt;
&lt;h1 id=&#34;dot-z-files&#34; class=&#34;anchor-header&#34;&gt;dot z files &lt;a class=&#34;anchor-link&#34; href=&#34;#dot-z-files&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;From &lt;a href=&#34;https://unix.stackexchange.com/a/71258/582800&#34;&gt;posting&lt;/a&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;.zshenv is always sourced. It often contains exported variables that
should be available to other programs. For example, $PATH, $EDITOR,
and $PAGER are often set in .zshenv. Also, you can set $ZDOTDIR in
.zshenv to specify an alternative location for the rest of your zsh
configuration.&lt;/li&gt;
&lt;li&gt;.zprofile is for login shells. It is basically the same as .zlogin
except that it&amp;rsquo;s sourced before .zshrc whereas .zlogin is sourced
after .zshrc. According to the zsh documentation, &amp;ldquo;.zprofile is meant
as an alternative to .zlogin for ksh fans; the two are not intended to
be used together, although this could certainly be done if desired.&amp;rdquo;&lt;/li&gt;
&lt;li&gt;.zshrc is for interactive shells. You set options for the interactive
shell there with the setopt and unsetopt commands. You can also load
shell modules, set your history options, change your prompt, set up
zle and completion, et cetera. You also set any variables that are
only used in the interactive shell (e.g. $LS_COLORS&lt;/sub&gt;).&lt;/li&gt;
&lt;li&gt;.zlogin is for login shells. It is sourced on the start of a login
shell but after .zshrc, if the shell is also interactive. This file is
often used to start X using startx. Some systems start X on boot, so
this file is not always very useful.&lt;/li&gt;
&lt;li&gt;.zlogout is sometimes used to clear and reset the terminal. It is
called when exiting, not when opening.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Also, the &lt;a href=&#34;https://github.com/search?q=zsh+dotfiles&amp;amp;ref=commandbar&amp;amp;type=repositories&#34;&gt;configuration files of random Github
users&lt;/a&gt;
gives possibilities.&lt;/p&gt;
&lt;h1 id=&#34;expanding-and-sorting&#34; class=&#34;anchor-header&#34;&gt;expanding and sorting &lt;a class=&#34;anchor-link&#34; href=&#34;#expanding-and-sorting&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;the o,O sort doesn&amp;rsquo;t work for ls unless we disable ls sort with -U&lt;/p&gt;
&lt;p&gt;Expanding Depending on a Predicate these things may be quite powerful if
we learn what to do with them e: *&amp;lt;cmd&amp;gt;&lt;/p&gt;
&lt;h1 id=&#34;expansions&#34; class=&#34;anchor-header&#34;&gt;expansions &lt;a class=&#34;anchor-link&#34; href=&#34;#expansions&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Expansions Depending On the Permissions might be useful ls *(f755)
would list only directories (usually) though ls -d */ simpler however,
there are many other features for this&lt;/p&gt;
&lt;p&gt;Expansions Depending on Date or Size ls **/*(L0) list all empty files
ls **/*(LG+1) list all files &amp;gt;1G ls **/*(mh-1) list all files
modified within last hour&lt;/p&gt;
&lt;h1 id=&#34;find-fd&#34; class=&#34;anchor-header&#34;&gt;find fd &lt;a class=&#34;anchor-link&#34; href=&#34;#find-fd&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id=&#34;copying-files&#34; class=&#34;anchor-header&#34;&gt;copying files &lt;a class=&#34;anchor-link&#34; href=&#34;#copying-files&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;find MMMM/local/.ocs.agio.organ/cur/ -maxdepth &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; -type f &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; xargs cp -t mail/cur/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;find . -maxdepth &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; -type f &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt;head -1000&lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; xargs cp -t &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$destdir&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;list-by-size&#34; class=&#34;anchor-header&#34;&gt;list by size &lt;a class=&#34;anchor-link&#34; href=&#34;#list-by-size&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;find . -size +1M &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;greater than 1M&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;find . -size -1M &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;less than 1M&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;find . -size +1M -exec ls -lh &lt;span class=&#34;o&#34;&gt;{}&lt;/span&gt; +
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;find-only-git-dirs&#34; class=&#34;anchor-header&#34;&gt;find only .git dirs &lt;a class=&#34;anchor-link&#34; href=&#34;#find-only-git-dirs&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;fd –exclude=&amp;quot;.cache&amp;quot; –type d –hidden &amp;lsquo;.git$&amp;rsquo; find ocs/ -type d -name
&amp;ldquo;.git&amp;rdquo;&lt;/p&gt;
&lt;h2 id=&#34;ignore-dir&#34; class=&#34;anchor-header&#34;&gt;ignore dir &lt;a class=&#34;anchor-link&#34; href=&#34;#ignore-dir&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;fd –exclude dir find . $&lt;code&gt;-name &amp;quot;.cache&amp;quot; -prune&lt;/code&gt;$ -o -name &amp;ldquo;.git&amp;rdquo; -type
d&lt;/p&gt;
&lt;h2 id=&#34;modifying-files&#34; class=&#34;anchor-header&#34;&gt;modifying files &lt;a class=&#34;anchor-link&#34; href=&#34;#modifying-files&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;find . -type d -name &lt;span class=&#34;s2&#34;&gt;&amp;#34;*UNUSED&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;while&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;read&lt;/span&gt; f&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;do&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    mv &lt;span class=&#34;nv&#34;&gt;$f&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;%/*&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;/unused&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;done&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;using for with find is not a good idea for some reason&lt;/p&gt;
&lt;h2 id=&#34;links&#34; class=&#34;anchor-header&#34;&gt;links &lt;a class=&#34;anchor-link&#34; href=&#34;#links&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;fd . bin/ -t l and broken links are highlighted find bin/ -xtype l just
shows the broken links&lt;/p&gt;
&lt;h2 id=&#34;renumber-files&#34; class=&#34;anchor-header&#34;&gt;renumber files &lt;a class=&#34;anchor-link&#34; href=&#34;#renumber-files&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;best done with zmv, but using find is still interesting&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# filenumberer.sh&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;k&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;find . -type f &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;while&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;read&lt;/span&gt; f&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;do&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nv&#34;&gt;k&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$((&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$k&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;+&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        cp &lt;span class=&#34;nv&#34;&gt;$f&lt;/span&gt; ../NEWDIR/&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(l(5)(0))k&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;.pdf
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;done&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;exit&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# can be done as per code below, but zmv is preferable&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; z in &lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;find /home/pradocs -name zotes.org&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;do&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;sb&#34;&gt;`&lt;/span&gt;mv &lt;span class=&#34;nv&#34;&gt;$z&lt;/span&gt; &lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;z&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;%/*&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;/zzotes.org&lt;span class=&#34;sb&#34;&gt;`&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;done&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id=&#34;find-exec&#34; class=&#34;anchor-header&#34;&gt;find exec &lt;a class=&#34;anchor-link&#34; href=&#34;#find-exec&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;this is a strange syntax but worth learning.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-zsh&#34; data-lang=&#34;zsh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# find all *.org* in the fireworks/ and replaces localhost:1313 with tf.com&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;find . -name &lt;span class=&#34;s2&#34;&gt;&amp;#34;*.org&amp;#34;&lt;/span&gt; -exec perl -pi -e &lt;span class=&#34;s1&#34;&gt;&amp;#39;s/localhost:1313/towardsfreedom.com/g&amp;#39;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;{}&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# remove broken links in bin/&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;find bin/ -xtype l -exec rm &lt;span class=&#34;o&#34;&gt;{}&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# get word count for pdf files&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;find . -name &lt;span class=&#34;s2&#34;&gt;&amp;#34;*.pdf&amp;#34;&lt;/span&gt; -exec wc &lt;span class=&#34;o&#34;&gt;{}&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# same as above but line it up nicely&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;find . -name &lt;span class=&#34;s2&#34;&gt;&amp;#34;*.pdf&amp;#34;&lt;/span&gt; -exec wc &lt;span class=&#34;o&#34;&gt;{}&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\+&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# same as above&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;find . -name &lt;span class=&#34;s2&#34;&gt;&amp;#34;*.pdf&amp;#34;&lt;/span&gt; -print0 &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; xargs -0 wc
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# print0 and xargs -0 handles spaces in filename which is bad idea anyway&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;exec Really Means exec!&lt;br&gt;
&amp;ldquo;It uses Linux’s built-in exec to run the command, replacing the current
process—your shell—with the command. So the command that is launched
isn’t running in a shell at all.&amp;rdquo; which is why exec ls wipes out the
shell!&lt;/p&gt;
&lt;p&gt;chaining (instead of piping?) example find . -name &amp;ldquo;*.page&amp;rdquo; -type f
-exec bash -c &amp;ldquo;basename &amp;ldquo;{}&amp;rdquo; &amp;amp;&amp;amp; words-only &amp;ldquo;{}&amp;rdquo;&amp;rdquo; \&lt;/p&gt;
&lt;h1 id=&#34;ffmpeg&#34; class=&#34;anchor-header&#34;&gt;ffmpeg &lt;a class=&#34;anchor-link&#34; href=&#34;#ffmpeg&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id=&#34;split-video-files&#34; class=&#34;anchor-header&#34;&gt;split video files &lt;a class=&#34;anchor-link&#34; href=&#34;#split-video-files&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ffmpeg -ss 00:03:04.560 -i input.mp4 -c copy -t 00:03:39.299 output.mp4
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;to split video files which sometimes even losscut cannot but ffmpeg can&lt;/p&gt;
&lt;h1 id=&#34;file-into-variable&#34; class=&#34;anchor-header&#34;&gt;file into variable &lt;a class=&#34;anchor-link&#34; href=&#34;#file-into-variable&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;var=$(&amp;lt;stuff.txt)&lt;/p&gt;
&lt;h1 id=&#34;for-itms-out-of-a-file&#34; class=&#34;anchor-header&#34;&gt;for itms out of a file &lt;a class=&#34;anchor-link&#34; href=&#34;#for-itms-out-of-a-file&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; l in &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(@f)&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;&amp;lt;filename&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;         &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;             &lt;span class=&#34;nv&#34;&gt;fnumber&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;youtube-dl -F &lt;span class=&#34;nv&#34;&gt;$l&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; tail -n &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; cut -f &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; -d &lt;span class=&#34;s1&#34;&gt;&amp;#39; &amp;#39;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;             youtube-dl --format &lt;span class=&#34;nv&#34;&gt;$fnumber&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$l&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;         &lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id=&#34;forloops&#34; class=&#34;anchor-header&#34;&gt;forloops &lt;a class=&#34;anchor-link&#34; href=&#34;#forloops&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;for i in {1..9}; do echo $i; done for ((i=1; i&amp;lt;10; i++)); echo $i&lt;/p&gt;
&lt;h1 id=&#34;grep&#34; class=&#34;anchor-header&#34;&gt;grep &lt;a class=&#34;anchor-link&#34; href=&#34;#grep&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id=&#34;lines-not-beginning-with-&#34; class=&#34;anchor-header&#34;&gt;lines not beginning with # &lt;a class=&#34;anchor-link&#34; href=&#34;#lines-not-beginning-with-&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://unix.stackexchange.com/questions/60994/how-to-grep-lines-which-does-not-begin-with-or&#34;&gt;https://unix.stackexchange.com/questions/60994/how-to-grep-lines-which-does-not-begin-with-or&lt;/a&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;grep &lt;span class=&#34;s2&#34;&gt;&amp;#34;^[^#;]&amp;#34;&lt;/span&gt; smb.conf
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;In other words, it reports lines that start with any character other
than and ;. It&amp;rsquo;s not the same as reporting the lines that don&amp;rsquo;t start
with and ; (for which you&amp;rsquo;d use grep -v &amp;lsquo;^[#;]&amp;rsquo;) in that it also
excludes empty lines&lt;/p&gt;
&lt;h1 id=&#34;heroic-commands-in-linux&#34; class=&#34;anchor-header&#34;&gt;heroic commands in linux &lt;a class=&#34;anchor-link&#34; href=&#34;#heroic-commands-in-linux&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=Zuwa8zlfXSY&#34;&gt;https://www.youtube.com/watch?v=Zuwa8zlfXSY&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;exit-terminal-but-leave-all-processes-running&#34; class=&#34;anchor-header&#34;&gt;exit terminal but leave all processes running &lt;a class=&#34;anchor-link&#34; href=&#34;#exit-terminal-but-leave-all-processes-running&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;disown&lt;/span&gt; -a &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;exit&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;intercept-stdout-and-log-to-file&#34; class=&#34;anchor-header&#34;&gt;intercept stdout and log to file &lt;a class=&#34;anchor-link&#34; href=&#34;#intercept-stdout-and-log-to-file&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cat contacts.org &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; tee -a log.txt &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; cat &amp;gt; /dev/null
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;keep-command-out-of-history&#34; class=&#34;anchor-header&#34;&gt;keep command out of history &lt;a class=&#34;anchor-link&#34; href=&#34;#keep-command-out-of-history&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;start any command with a leading space and it will not go into history&lt;/p&gt;
&lt;h2 id=&#34;put-something-in-the-background-ramdisk-for-fast-rw&#34; class=&#34;anchor-header&#34;&gt;put something in the background** ramdisk for fast rw &lt;a class=&#34;anchor-link&#34; href=&#34;#put-something-in-the-background-ramdisk-for-fast-rw&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mkdir /mnt/ram
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mount -t tmpfs tmpfs /mnt/ram -o &lt;span class=&#34;nv&#34;&gt;size&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;8192M
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;dd &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;/dev/zero &lt;span class=&#34;nv&#34;&gt;of&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;test.iso &lt;span class=&#34;nv&#34;&gt;bs&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;1M &lt;span class=&#34;nv&#34;&gt;count&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;8000&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;on an ssd the above worked at 2.2G/s, but with ramdisk it was 3.9G/s!&lt;/p&gt;
&lt;h2 id=&#34;recursive-directory-creation&#34; class=&#34;anchor-header&#34;&gt;recursive directory creation &lt;a class=&#34;anchor-link&#34; href=&#34;#recursive-directory-creation&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mkdir -p folder/&lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;sub1,sub2&lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;/&lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;sub1,sub2,sub3&lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mkdir -p folder/&lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;1..100&lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;/&lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;1..10&lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;redo-last-command-via-sudo&#34; class=&#34;anchor-header&#34;&gt;redo last command via sudo &lt;a class=&#34;anchor-link&#34; href=&#34;#redo-last-command-via-sudo&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;sudo !!&lt;/p&gt;
&lt;p&gt;particularly helpful if you don&amp;rsquo;t want to retype a long command.&lt;/p&gt;
&lt;h2 id=&#34;tunneling&#34; class=&#34;anchor-header&#34;&gt;tunneling &lt;a class=&#34;anchor-link&#34; href=&#34;#tunneling&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;tunneling to connect to cloud through a port of choice:&lt;br&gt;
ssh -L localport:host:port-relative-to-machine login-credentials&lt;/p&gt;
&lt;p&gt;we did this at one point to connect to lentil via wifi somehow.&lt;/p&gt;
&lt;h2 id=&#34;use-an-editor-to-alter-a-long-messed-up-command&#34; class=&#34;anchor-header&#34;&gt;use an editor to alter a long messed up command &lt;a class=&#34;anchor-link&#34; href=&#34;#use-an-editor-to-alter-a-long-messed-up-command&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;push enter on the messed up command and then type fc to work with the
command in default editor&lt;/p&gt;
&lt;p&gt;execute the command then use bg&lt;/p&gt;
&lt;h1 id=&#34;largest-files-and-folders-identification&#34; class=&#34;anchor-header&#34;&gt;largest files and folders identification &lt;a class=&#34;anchor-link&#34; href=&#34;#largest-files-and-folders-identification&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;du -h &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; sort -hr &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; head -n &lt;span class=&#34;m&#34;&gt;10&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;du -ah &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; sort -hr &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; head -n &lt;span class=&#34;m&#34;&gt;10&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id=&#34;ls&#34; class=&#34;anchor-header&#34;&gt;ls &lt;a class=&#34;anchor-link&#34; href=&#34;#ls&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id=&#34;inverse&#34; class=&#34;anchor-header&#34;&gt;inverse &lt;a class=&#34;anchor-link&#34; href=&#34;#inverse&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;the inverse is giving by ^&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ls *M.mp4
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ls ^*M.mp4
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;list-only-directories&#34; class=&#34;anchor-header&#34;&gt;list only directories &lt;a class=&#34;anchor-link&#34; href=&#34;#list-only-directories&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;List only directories
(&lt;a href=&#34;https://unix.stackexchange.com/a/502028/582800&#34;&gt;post&lt;/a&gt;) ls -d – *(&lt;em&gt;)
ls -ld – *(&lt;/em&gt;)&lt;/p&gt;
&lt;h1 id=&#34;new-zsh-script&#34; class=&#34;anchor-header&#34;&gt;new zsh script &lt;a class=&#34;anchor-link&#34; href=&#34;#new-zsh-script&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;cp ~/sh/zztmpls/zshtmpl.sh ~/new.sh&lt;/p&gt;
&lt;p&gt;enter title that is descriptive&lt;br&gt;
set VDATe: v1 - M-x org-time-stamp write PURPose&lt;br&gt;
provide desc&lt;/p&gt;
&lt;p&gt;block comment above&lt;/p&gt;
&lt;p&gt;fill out help section &amp;ldquo;use&amp;rdquo; and &amp;ldquo;how&amp;rdquo;&lt;/p&gt;
&lt;p&gt;add variables and coding&lt;/p&gt;
&lt;h1 id=&#34;numeric-sequence-generation&#34; class=&#34;anchor-header&#34;&gt;numeric sequence generation &lt;a class=&#34;anchor-link&#34; href=&#34;#numeric-sequence-generation&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;touch a{01..99}.txt works touch a[01-99].txt doesn&amp;rsquo;t work&lt;/p&gt;
&lt;p&gt;x a{2..4}* works x a[2-4]* works&lt;/p&gt;
&lt;h1 id=&#34;pad-with-zero&#34; class=&#34;anchor-header&#34;&gt;pad with zero &lt;a class=&#34;anchor-link&#34; href=&#34;#pad-with-zero&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;seq -w 1 11&lt;/p&gt;
&lt;p&gt;or for more control&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; i in &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;2..11&lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;do&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$u1&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(l:&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:)i&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$u2$i&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;done&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;and can get something like this&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;https://tubitv.com/tv-shows/524508/s01-e02-episode-2
https://tubitv.com/tv-shows/524508/s01-e03-episode-3
https://tubitv.com/tv-shows/524508/s01-e04-episode-4
&lt;/code&gt;&lt;/pre&gt;
&lt;h1 id=&#34;perl-onliners&#34; class=&#34;anchor-header&#34;&gt;perl onliners &lt;a class=&#34;anchor-link&#34; href=&#34;#perl-onliners&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id=&#34;add-a-line-after-match&#34; class=&#34;anchor-header&#34;&gt;add a line after match &lt;a class=&#34;anchor-link&#34; href=&#34;#add-a-line-after-match&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;perl -pi -e &lt;span class=&#34;s1&#34;&gt;&amp;#39;/paper.ily/ and $_.=&amp;#34;\\include \&amp;#34;../../zztmpls/functions.scm\&amp;#34;\n&amp;#34;&amp;#39;&lt;/span&gt; score.ly
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id=&#34;prompts&#34; class=&#34;anchor-header&#34;&gt;prompts &lt;a class=&#34;anchor-link&#34; href=&#34;#prompts&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;add these to .zshrc:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;autoload -Uz promptinit
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;promptinit
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;prompt bart &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;or whatever&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;5 prompts:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$PS1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$RPS1&lt;/span&gt; rightside
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$PS2&lt;/span&gt; waiting &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; more input
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$PS3&lt;/span&gt; making choices
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$PS4&lt;/span&gt; debugging scripts
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id=&#34;redo-softlinks&#34; class=&#34;anchor-header&#34;&gt;redo softlinks &lt;a class=&#34;anchor-link&#34; href=&#34;#redo-softlinks&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;find ~/bin -type l -ls &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; tr -s &lt;span class=&#34;s2&#34;&gt;&amp;#34; &amp;#34;&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;\t&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; cut -f11,13
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;couldn&amp;rsquo;t do tr with sed for some reason&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://unix.stackexchange.com/questions/188057/update-symlinks-by-scripting%5C&#34;&gt;https://unix.stackexchange.com/questions/188057/update-symlinks-by-scripting\&lt;/a&gt;
though the ideas using realpath will work, it doesn&amp;rsquo;t do what we are
trying to accomplish which is to replace &amp;lsquo;ba&amp;rsquo; with &amp;lsquo;sh&amp;rsquo; in the softlink&lt;/p&gt;
&lt;h1 id=&#34;remove-empty-directories&#34; class=&#34;anchor-header&#34;&gt;remove empty directories &lt;a class=&#34;anchor-link&#34; href=&#34;#remove-empty-directories&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rmdir --verbose **/*&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;/^F&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rmdir --verbose **/*&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;/od&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;a href=&#34;https://www.zsh.org/mla/users/2005/msg01375.html&#34;&gt;https://www.zsh.org/mla/users/2005/msg01375.html&lt;/a&gt;&lt;/p&gt;
&lt;h1 id=&#34;remove-empty-directories-recursively&#34; class=&#34;anchor-header&#34;&gt;remove empty directories recursively &lt;a class=&#34;anchor-link&#34; href=&#34;#remove-empty-directories-recursively&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rmdir --verbose **/*&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;/^F&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rmdir --verbose **/*&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;/od&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;a href=&#34;https://www.zsh.org/mla/users/2005/msg01375.html&#34;&gt;https://www.zsh.org/mla/users/2005/msg01375.html&lt;/a&gt;&lt;/p&gt;
&lt;h1 id=&#34;rename&#34; class=&#34;anchor-header&#34;&gt;rename &lt;a class=&#34;anchor-link&#34; href=&#34;#rename&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rename -v pradagio pradesigner */*/* &lt;span class=&#34;c1&#34;&gt;#like grep -r&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id=&#34;rsync&#34; class=&#34;anchor-header&#34;&gt;rsync &lt;a class=&#34;anchor-link&#34; href=&#34;#rsync&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id=&#34;exclude&#34; class=&#34;anchor-header&#34;&gt;exclude &lt;a class=&#34;anchor-link&#34; href=&#34;#exclude&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;rsync -av --delete --exclude={&#39;dir1&#39;,&#39;dir2&#39;,&#39;file1.txt&#39;} ~/ocs ~/mnts/sd64/
&lt;/code&gt;&lt;/pre&gt;
&lt;h1 id=&#34;run-help&#34; class=&#34;anchor-header&#34;&gt;run-help &lt;a class=&#34;anchor-link&#34; href=&#34;#run-help&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Use M-h on a command&lt;/p&gt;
&lt;p&gt;Setup properly in .zshrc unalias run-help 2&amp;gt;/dev/null autoload -U
run-help&lt;/p&gt;
&lt;h1 id=&#34;sed&#34; class=&#34;anchor-header&#34;&gt;sed &lt;a class=&#34;anchor-link&#34; href=&#34;#sed&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id=&#34;backref-peculiarities&#34; class=&#34;anchor-header&#34;&gt;backref peculiarities &lt;a class=&#34;anchor-link&#34; href=&#34;#backref-peculiarities&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;schnell% &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$v&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;Integrating Values and Ethics into Wildlife Policy and Management Lessons from North America&lt;span class=&#34;o&#34;&gt;](&lt;/span&gt;http://www.mdpi.com/2076-2615/1/1/126&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;schnell% &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$v&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; sed -r -n &lt;span class=&#34;s1&#34;&gt;&amp;#39;s/\[(.+)\]/\1/p&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Integrating Values and Ethics into Wildlife Policy and Management Lessons from North America&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;http://www.mdpi.com/2076-2615/1/1/126&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;schnell% &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$v&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; sed -rn &lt;span class=&#34;s1&#34;&gt;&amp;#39;s/\[(.+)\]\((.*)\)/\2\1/p&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;http://www.mdpi.com/2076-2615/1/1/126Integrating Values and Ethics into Wildlife Policy and Management Lessons from North America
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;why does the entire $v get printed in the second item?&lt;/p&gt;
&lt;h2 id=&#34;getting-pics-from-html-file-to-proper-directories&#34; class=&#34;anchor-header&#34;&gt;getting pics from html file to proper directories &lt;a class=&#34;anchor-link&#34; href=&#34;#getting-pics-from-html-file-to-proper-directories&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;from html source:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;p&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;class&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;hdr&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;Iwrters&lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;p&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;p&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;class&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;dsc&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;Icquaint yourself with those who contributed to this site over the years!&lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;p&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;br&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;div&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;style&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;background-color:#ccccff; margin:1em 1em 5em 1em&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;img&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;class&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;floatrig&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;src&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;y-283.jpg&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;width&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;75&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;alt&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;Alexandra&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;p&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;class&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;secitmtle&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;Alexandra&lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;p&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;p&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;class&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;secitmdsc&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;I love animals more than anything else!&lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;p&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;p&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;class&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;secitmurl&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;a&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;href&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;http://www.30bananasaday.com/profile/AlexandraR?xg_source=profiles_memberList&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;see&lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;a&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;p&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;p&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;class&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;whern&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;p&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;div&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;div&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;style&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;background-color:#ddddff; margin:1em 1em 5em 1em&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;img&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;class&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;floatrig&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;src&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;y-288.jpg&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;width&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;75&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;alt&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;Angelkate&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;/&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;p&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;class&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;secitmtle&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;Angelkate&lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;p&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;p&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;class&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;secitmdsc&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;Here we find divinity, for we are it.&lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;p&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;p&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;class&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;secitmurl&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;a&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;href&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;288.html&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;see&lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;a&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;p&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;p&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;class&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;whern&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;p&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;div&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;need to pull out the y-*.jpg and put it into the alt=&amp;ldquo;NAME&amp;rdquo; directory.&lt;/p&gt;
&lt;p&gt;the problem couldn&amp;rsquo;t be solved with sed because non-greedy finds aren&amp;rsquo;t
possible, but cut worked nicely:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sed -n &lt;span class=&#34;s2&#34;&gt;&amp;#34;/^&amp;lt;img class/p&amp;#34;&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$tf&lt;/span&gt;/2.html &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; cut -d &lt;span class=&#34;se&#34;&gt;\&amp;#34;&lt;/span&gt; -f 4,8 &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; sed &lt;span class=&#34;s1&#34;&gt;&amp;#39;s/&amp;#34;/:/&amp;#39;&lt;/span&gt; &amp;gt; TMP
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# need to change the &amp;#34; to : so it can be used as a delimiter for splitting.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;while&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;read&lt;/span&gt; li&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;do&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nv&#34;&gt;a&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(@s/:/)li&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    cp &lt;span class=&#34;nv&#34;&gt;$a&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;1&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; ~/hugos/towardsfreedom/content/iwrters/&lt;span class=&#34;nv&#34;&gt;$a&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;2&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;/00.jpg&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;done&lt;/span&gt; &amp;lt; ~/hugos/towardsfreedom/TMP
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;md-to-org-links-conversion-multiple-in-place-replace&#34; class=&#34;anchor-header&#34;&gt;md to org links conversion** multiple in-place replace: &lt;a class=&#34;anchor-link&#34; href=&#34;#md-to-org-links-conversion-multiple-in-place-replace&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sed -i
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    -e &lt;span class=&#34;s1&#34;&gt;&amp;#39;s/\\skip1//g&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    -e &lt;span class=&#34;s1&#34;&gt;&amp;#39;s/\&amp;#34;//g&amp;#39;&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    -e &lt;span class=&#34;s1&#34;&gt;&amp;#39;s/  / /g&amp;#39;&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    -e &lt;span class=&#34;s1&#34;&gt;&amp;#39;s/\\dynamicUp//g&amp;#39;&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    -e &lt;span class=&#34;s1&#34;&gt;&amp;#39;s/\\set ignoreMelismata = ##t//g&amp;#39;&lt;/span&gt; *.ly
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;replace-string-with-contents-of-file&#34; class=&#34;anchor-header&#34;&gt;replace string with contents of file &lt;a class=&#34;anchor-link&#34; href=&#34;#replace-string-with-contents-of-file&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sed -e &lt;span class=&#34;s2&#34;&gt;&amp;#34;/Acss/r qq&amp;#34;&lt;/span&gt; -e &lt;span class=&#34;s2&#34;&gt;&amp;#34;/Acss/d&amp;#34;&lt;/span&gt; index.php
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;puts contents of file qq right after Acss line and deletes the Acss line
people have wondered how to just substitute the string and not the line&lt;/p&gt;
&lt;h2 id=&#34;swap-lines&#34; class=&#34;anchor-header&#34;&gt;swap lines &lt;a class=&#34;anchor-link&#34; href=&#34;#swap-lines&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;this sort of does it but not too well there seems to be no way to delete
line only the first occurance of a match&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sed -e &lt;span class=&#34;s1&#34;&gt;&amp;#39;/subsubtitle/ {h; n;p; x}&amp;#39;&lt;/span&gt;  Ta-Ta-Ta.ly &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sed -e &lt;span class=&#34;s1&#34;&gt;&amp;#39;6d&amp;#39;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;head
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;various-extraction-methods&#34; class=&#34;anchor-header&#34;&gt;various extraction methods &lt;a class=&#34;anchor-link&#34; href=&#34;#various-extraction-methods&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://stackoverflow.com/questions/17511639/sed-print-only-matching-group&#34;&gt;https://stackoverflow.com/questions/17511639/sed-print-only-matching-group&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;sed -rn &amp;rsquo;s/&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-math&#34; data-lang=&#34;math&#34;&gt;(.+)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;$&lt;code&gt;(.*)&lt;/code&gt;$/





    
    &lt;img src=&#34;%5c2&#34; alt=&#34;\2&#34;&gt;

/p&amp;rsquo;&lt;/p&gt;
&lt;h1 id=&#34;setting-and-using-an-array-in-for-loop&#34; class=&#34;anchor-header&#34;&gt;setting and using an array in for loop &lt;a class=&#34;anchor-link&#34; href=&#34;#setting-and-using-an-array-in-for-loop&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;this is a bit weird, but it works&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#setup L1 directories&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;L1dirs&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=(&lt;/span&gt;Iwrter Issays Ithngs Ibrary Ictvty Inotes&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; d in &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;L1dirs&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[@]&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;do&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$d&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;done&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;though just this will work too:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; d in Iwrter Issays Ithngs Ibrary Ictvty Inotes&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;do&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$d&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;done&lt;/span&gt;         
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id=&#34;shell-options&#34; class=&#34;anchor-header&#34;&gt;shell options &lt;a class=&#34;anchor-link&#34; href=&#34;#shell-options&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;zsh -l &lt;span class=&#34;c1&#34;&gt;#&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;zsh -v &lt;span class=&#34;c1&#34;&gt;#&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;zsh -x &lt;span class=&#34;c1&#34;&gt;#xtrace—which can prove invaluable when debugging your scripts&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;zsh -f &lt;span class=&#34;c1&#34;&gt;#start a clean instance of zsh using the default settings can set after shell started&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id=&#34;shortcut-patterns&#34; class=&#34;anchor-header&#34;&gt;shortcut patterns &lt;a class=&#34;anchor-link&#34; href=&#34;#shortcut-patterns&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;A-Za-z &amp;lt;==&amp;gt; :alpha:
ascii,lower,upper,digit,alnum,print,blank(space,tab),space,punct&lt;/p&gt;
&lt;p&gt;&amp;lt;-&amp;gt; numeric x a&amp;lt;70-90&amp;gt;.txt&lt;/p&gt;
&lt;h1 id=&#34;sh_wordsplit-option-bing&#34; class=&#34;anchor-header&#34;&gt;sh_wordsplit&lt;/sub&gt; option (bing) &lt;a class=&#34;anchor-link&#34; href=&#34;#sh_wordsplit-option-bing&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;The zsh sh_wordsplit&lt;/sub&gt; option is a compatibility feature that
makes zsh behave like other shells when it comes to word splitting. Word
splitting is the process of breaking a string into words based on some
delimiter characters, such as spaces or colons. This is often done when
passing arguments to a command or looping over a list of values.&lt;/p&gt;
&lt;p&gt;By default, zsh does not perform word splitting on unquoted parameter
expansions. This means that if you have a variable that contains
multiple words separated by spaces, such as `str=&amp;ldquo;foo bar baz&amp;rdquo;`, and
you use it as an argument to a command, such as `echo $str`, zsh will
treat it as a single word and pass it as one argument to echo. This is
different from other shells, such as bash or ksh, which would split the
variable into three words and pass them as three arguments to echo.&lt;/p&gt;
&lt;p&gt;The sh_wordsplit&lt;/sub&gt; option makes zsh emulate the behavior of
other shells and perform word splitting on unquoted parameter
expansions. This means that if you set this option, `echo
$&lt;code&gt;str&lt;/code&gt; will print &lt;code&gt;foo bar baz&lt;/code&gt; on three separate lines, as if you had written &lt;code&gt;echo &amp;quot;&lt;/code&gt;$
{ (@s: :)str}&amp;quot;`. The option also affects other forms of parameter
expansion, such as command substitution and arithmetic expansion.&lt;/p&gt;
&lt;p&gt;The sh_wordsplit&lt;/sub&gt; option is useful when you want to write
scripts that are compatible with other shells, or when you want to use
variables that contain lists of values separated by some delimiter.
However, it can also introduce unexpected behavior and errors if you are
not careful with quoting. For example, if you have a variable that
contains spaces in its values, such as `str=&amp;ldquo;foo &amp;lsquo;bar baz&amp;rsquo; qux&amp;rdquo;`, and
you use it in a for loop, such as `for x in $str; do echo $x; done`,
zsh will split the variable into four words and print them on four
lines, even though you might have intended to treat `bar baz` as a
single word.&lt;/p&gt;
&lt;p&gt;A better way to handle lists of values in zsh is to use arrays, which
are variables that can store multiple values without relying on
delimiters. You can create an array by enclosing a list of words in
parentheses, such as `arr=(foo &amp;lsquo;bar baz&amp;rsquo; qux)`, and access its
elements by using the subscript notation, such as `echo $arr[2]`.
You can also use the `typeset -T` builtin command to tie an array
variable to a scalar variable, so that any changes to one are reflected
in the other. For example, `typeset -T str str_array&lt;/sub&gt;` will
create an array variable `str_array&lt;/sub&gt;` that is tied to the
scalar variable `str`. If you assign a value to `str`, such as
`str=&amp;ldquo;foo:bar:baz&amp;rdquo;`, the array variable will be updated accordingly,
and vice versa.&lt;/p&gt;
&lt;p&gt;For more information about word splitting and arrays in zsh, you can
refer to the following sources:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;[What is word splitting? Why is it important in shell
programming?](&lt;sup&gt;1&lt;/sup&gt;^)&lt;/li&gt;
&lt;li&gt;[How to split a string by &amp;lsquo;:&amp;rsquo; character in bash/zsh?](&lt;sup&gt;2&lt;/sup&gt;^)&lt;/li&gt;
&lt;li&gt;[Z-Shell Frequently-Asked Questions](&lt;sup&gt;3&lt;/sup&gt;^)&lt;/li&gt;
&lt;li&gt;[Re: Word splitting with zsh fix](&lt;sup&gt;4&lt;/sup&gt;^)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Source: Conversation with Bing, 9/12/2023 (1) zsh - What is word
splitting? Why is it important in shell programming ….
&lt;a href=&#34;https://unix.stackexchange.com/questions/26661/what-is-word-splitting-why-is-it-important-in-shell-programming&#34;&gt;https://unix.stackexchange.com/questions/26661/what-is-word-splitting-why-is-it-important-in-shell-programming&lt;/a&gt;.
(2) How to split a string by &amp;lsquo;:&amp;rsquo; character in bash/zsh?.
&lt;a href=&#34;https://unix.stackexchange.com/questions/614299/how-to-split-a-string-by-character-in-bash-zsh&#34;&gt;https://unix.stackexchange.com/questions/614299/how-to-split-a-string-by-character-in-bash-zsh&lt;/a&gt;.
(3) Z-Shell Frequently-Asked Questions - SourceForge.
&lt;a href=&#34;https://zsh.sourceforge.io/FAQ/zshfaq03.html&#34;&gt;https://zsh.sourceforge.io/FAQ/zshfaq03.html&lt;/a&gt;. (4) Re: Word splitting
with zsh fix. &lt;a href=&#34;https://www.zsh.org/mla/workers/2006/msg00139.html&#34;&gt;https://www.zsh.org/mla/workers/2006/msg00139.html&lt;/a&gt;.&lt;/p&gt;
&lt;h1 id=&#34;specific-computers&#34; class=&#34;anchor-header&#34;&gt;specific computers &lt;a class=&#34;anchor-link&#34; href=&#34;#specific-computers&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# broot setup for specific computers&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[[&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$HOST&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;schnell&amp;#39;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;||&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$HOST&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;adagio&amp;#39;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;]]&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;k&#34;&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;       &lt;span class=&#34;c1&#34;&gt;#code&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id=&#34;sshfs&#34; class=&#34;anchor-header&#34;&gt;sshfs &lt;a class=&#34;anchor-link&#34; href=&#34;#sshfs&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;paru -S sshfs sshfs &amp;lt;computer&amp;gt;: /home/mnts/&amp;lt;computer&amp;gt; umount
/home/mnts/&amp;lt;computer&amp;gt;&lt;/p&gt;
&lt;h1 id=&#34;tee&#34; class=&#34;anchor-header&#34;&gt;tee &lt;a class=&#34;anchor-link&#34; href=&#34;#tee&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;reads from the standard input and writes to both standard output and one
or more files at the same time (it helped to solve the rejects.sh issue
we were having)&lt;/p&gt;
&lt;p&gt;it can be used to write to multiple files as well as append:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;command&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; tee file1.out file2.out file3.out
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;command&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; tee -a file.out
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;very useful when combined with sudo:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;newline&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; sudo tee -a /etc/file.conf
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;or remotely:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; e in &lt;span class=&#34;nv&#34;&gt;$@&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;do&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$e&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt; REJECT&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; ssh REMOTE sudo tee -a /etc/postfix/access
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;done&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id=&#34;text-file-into-array&#34; class=&#34;anchor-header&#34;&gt;text file into array &lt;a class=&#34;anchor-link&#34; href=&#34;#text-file-into-array&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;#!/bin/zsh
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# urls should not be separated by blank lines or&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# have quotes (it seems or we get missing scheme error)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# getting the urls into an array needs to be looked at&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;ln&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; l in &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(@f)&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;&amp;lt;./urls&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;         &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;             &lt;span class=&#34;nv&#34;&gt;fn&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$ln&lt;/span&gt;.mp4
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;             &lt;span class=&#34;c1&#34;&gt;#echo &amp;#34;wget -O $fn $l&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;             wget -O &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$fn&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$l&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;             &lt;span class=&#34;o&#34;&gt;((&lt;/span&gt;ln++&lt;span class=&#34;o&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;         &lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;all done&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;exit&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id=&#34;variables-as-commands&#34; class=&#34;anchor-header&#34;&gt;variables as commands &lt;a class=&#34;anchor-link&#34; href=&#34;#variables-as-commands&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;setopt sh_wordsplit&lt;/sub&gt; otherwise $s=&amp;ldquo;sleep 2&amp;rdquo; is non-functional
or $e=&amp;ldquo;emacsclient -c&amp;rdquo; is not found&lt;/p&gt;
&lt;h1 id=&#34;zmv&#34; class=&#34;anchor-header&#34;&gt;zmv &lt;a class=&#34;anchor-link&#34; href=&#34;#zmv&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;We should use this since it is zsh perl-rename may be better in some
situations rename is rather limited except for very straightforward
stuff&lt;/p&gt;
&lt;p&gt;Very powerful commands though the syntax may be difficult to remember
unless we get used to it through regular practice which is unlikely
since we don&amp;rsquo;t do this too often. So looking it up is better.&lt;/p&gt;
&lt;p&gt;This is a multiple move based on zsh pattern matching. To get the full
power of it, you need a postgraduate degree in zsh. However, simple
tasks work OK, so if that&amp;rsquo;s all you need, here are some basic examples:&lt;/p&gt;
&lt;h2 id=&#34;footxt-to-foolis-etc&#34; class=&#34;anchor-header&#34;&gt;foo.txt to foo.lis, etc &lt;a class=&#34;anchor-link&#34; href=&#34;#footxt-to-foolis-etc&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The items below shows move, copy, and link using zmv.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;zmv &lt;span class=&#34;s1&#34;&gt;&amp;#39;(*).txt&amp;#39;&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;$1.lis&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The parenthesis is the thing that gets replaced by the
$&lt;code&gt;1 (not the &lt;/code&gt;*&amp;rsquo;, as happens in mmv, and note the
``$&amp;rsquo;, not `=&amp;rsquo;, so that you need to quote both words).&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;zmv &lt;span class=&#34;s1&#34;&gt;&amp;#39;(**/)(*).txt &amp;#39;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$1$2&lt;/span&gt;.lis&lt;span class=&#34;err&#34;&gt;&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The same, but scanning through subdirectories. The $1 becomes the full
path. Note that you need to write it like this; you can&amp;rsquo;t get away with
&amp;lsquo;(**/*).txt&amp;rsquo;.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;noglob zmv -W **/*.txt **/*.lis
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;zmv -w &lt;span class=&#34;s1&#34;&gt;&amp;#39;**/*.txt&amp;#39;&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;$1$2.lis&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;These are the lazy version of the one above; with -w, zsh inserts the
parentheses for you in the search pattern, and with -W it also inserts
the numbered variables for you in the replacement pattern. The catch in
the first version is that you don&amp;rsquo;t need the / in the replacement
pattern. (It&amp;rsquo;s not really a catch, since $1 can be empty.) Note that -W
actually inserts ${1}, ${2}, etc., so it works even if you put a
number after a wildcard (such as zmv -W &amp;lsquo;*1.txt&amp;rsquo; &amp;lsquo;*2.txt&amp;rsquo;). [We alias
zmv -[wW] to zm[wW]]&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;zmv -C &lt;span class=&#34;s1&#34;&gt;&amp;#39;**/(*).txt&amp;#39;&lt;/span&gt; ~/save/&lt;span class=&#34;s1&#34;&gt;&amp;#39;$1&amp;#39;&lt;/span&gt;.lis
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Copy, instead of move, all .txt files in subdirectories to .lis files in
the single directory `~/save&amp;rsquo;. Note that the ~ was not quoted. You can
test things safely by using the `-n&amp;rsquo; (no, not now) option. Clashes,
where multiple files are renamed or copied to the same one, are picked
up.&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s a more detailed description.&lt;/p&gt;
&lt;p&gt;Use zsh pattern matching to move, copy or link files, depending on the
last two characters of the function name. The general syntax is&lt;/p&gt;
&lt;p&gt;zmv &amp;lsquo;&amp;lt;inpat&amp;gt;&amp;rsquo; &amp;lsquo;&amp;lt;outstring&amp;gt;&amp;rsquo;&lt;/p&gt;
&lt;p&gt;&amp;lt;inpat&amp;gt; is a globbing pattern, so it should be quoted to prevent it
from immediate expansion, while &amp;lt;outstring&amp;gt; is a string that will be
re-evaluated and hence may contain parameter substitutions, which should
also be quoted. Each set of parentheses in &amp;lt;inpat&amp;gt; (apart from those
around glob qualifiers, if you use the -Q option, and globbing flags)
may be referred to by a positional parameter in &amp;lt;outstring&amp;gt;, i.e. the
first (…) matched is given by $1, and so on. For example,&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;zmv &lt;span class=&#34;s1&#34;&gt;&amp;#39;([a-z])(*).txt&amp;#39;&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;${(C)1}$2.txt&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;renames algernon.txt to Algernon.txt, boris.txt to Boris.txt and so on.
The original file matched can be referred to as $f in the second
argument; accidental or deliberate use of other parameters is at owner&amp;rsquo;s
risk and is not covered by the (non-existent) guarantee.&lt;/p&gt;
&lt;p&gt;As usual in zsh, &lt;em&gt;&amp;rsquo;s don&amp;rsquo;t work inside parentheses. There is a special
case for (**&lt;/em&gt;) and (***/): these have the expected effect that the
entire relevant path will be substituted by the appropriate positional
parameter.&lt;/p&gt;
&lt;p&gt;There is a shortcut avoiding the use of parenthesis with the option -w
(with wildcards), which picks out any expressions `*&amp;rsquo;, `?&amp;rsquo;,
`&amp;lt;range&amp;gt;&amp;rsquo; (&amp;lt;-&amp;gt;, &amp;lt;1-10&amp;gt;, etc.), `[…]&amp;rsquo;, possibly followed by
`#&amp;rsquo;s, `**/&amp;rsquo;, `***/&amp;rsquo;, and automatically parenthesises them. (You
should quote any [&amp;rsquo;s or ]&amp;rsquo;s which appear inside […] and which do not
come from ranges of the form `[:alpha:]&amp;rsquo;.) So for example, in&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;zmv -w &lt;span class=&#34;s1&#34;&gt;&amp;#39;[[:upper:]]*&amp;#39;&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;${(L)1}$2&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;the $1 refers to the expression `&lt;a href=&#34;:upper:&#34;&gt;:upper:&lt;/a&gt;&amp;rsquo; and the $2
refers to `*&amp;rsquo;. Thus this finds any file with an upper case first
character and renames it to one with a lowercase first character. Note
that any existing parentheses are active, too, so you must count
accordingly. Furthermore, an expression like &amp;lsquo;(?)&amp;rsquo; will be rewritten as
&amp;lsquo;((?))&amp;rsquo; — in other words, parenthesising of wildcards is independent of
any existing parentheses.&lt;/p&gt;
&lt;p&gt;Any file whose name is not changed by the substitution is simply
ignored. Any error — a substitution resulted in an empty string, two
substitutions gave the same result, the destination was an existing
regular file and -f was not given — causes the entire function to abort
without doing anything.&lt;/p&gt;
&lt;p&gt;Bugs:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Parenthesised expressions can be confused with glob qualifiers, for
example a trailing &amp;lsquo;(*)&amp;rsquo; would be treated as a glob qualifier in
ordinary globbing. This has proved so annoying that glob qualifiers
are now turned off by default. To force the use of glob qualifiers,
give the flag -Q.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The pattern is always treated as an extendedglob pattern. This
can also be interpreted as a feature.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Unbugs:&lt;/p&gt;
&lt;p&gt;You don&amp;rsquo;t need braces around the 1 in expressions like &amp;lsquo;$1t&amp;rsquo; as
non-positional parameters may not start with a number, although
paranoiacs like the author will probably put them there anyway.&lt;/p&gt;
&lt;h2 id=&#34;capitalize-all-vowels&#34; class=&#34;anchor-header&#34;&gt;capitalize all vowels &lt;a class=&#34;anchor-link&#34; href=&#34;#capitalize-all-vowels&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;zmv &lt;span class=&#34;s1&#34;&gt;&amp;#39;(*)&amp;#39;&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;${1//(#m)[aeiou]/${(U)MATCH}}&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;get-rid-of-single-quotes&#34; class=&#34;anchor-header&#34;&gt;get rid of single quotes &lt;a class=&#34;anchor-link&#34; href=&#34;#get-rid-of-single-quotes&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;zmv -nQ &lt;span class=&#34;s1&#34;&gt;&amp;#39;*.html&amp;#39;&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;\${f//&amp;#39;/}&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;with Q we need to escape certain things like $&lt;/p&gt;
&lt;h2 id=&#34;lowercase-and-space-to-hyphen&#34; class=&#34;anchor-header&#34;&gt;lowercase and space-to-hyphen &lt;a class=&#34;anchor-link&#34; href=&#34;#lowercase-and-space-to-hyphen&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;zmv -n &amp;lsquo;*&amp;rsquo; &amp;lsquo;${f:l:s/ /-}&amp;rsquo;&lt;/p&gt;
&lt;h2 id=&#34;lowercase-the-directories&#34; class=&#34;anchor-header&#34;&gt;lowercase the directories &lt;a class=&#34;anchor-link&#34; href=&#34;#lowercase-the-directories&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;zmv -vw &lt;span class=&#34;s1&#34;&gt;&amp;#39;**/(*)/&amp;#39;&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;${f:l}&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;we had to run it 3 times though to get everything TODO&lt;/p&gt;
&lt;h2 id=&#34;remove-1st-four-char&#34; class=&#34;anchor-header&#34;&gt;remove 1st four char &lt;a class=&#34;anchor-link&#34; href=&#34;#remove-1st-four-char&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;zmv &lt;span class=&#34;s1&#34;&gt;&amp;#39;*&amp;#39;&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;$f[5,-1]&amp;#39;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;where f is a zmv generated variable&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;renumber-files-1&#34; class=&#34;anchor-header&#34;&gt;renumber files &lt;a class=&#34;anchor-link&#34; href=&#34;#renumber-files-1&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;0&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;zmv &lt;span class=&#34;s1&#34;&gt;&amp;#39;(FILENAME-COMMON-PART)(*)&amp;#39;&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;$1$((i++)).mp4&amp;#39;&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;#[] works too but may cause problems&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;1&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; zmv -n &lt;span class=&#34;s1&#34;&gt;&amp;#39;(img*.jpg)&amp;#39;&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;${(l:2::0:)$((i++))}$1&amp;#39;&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;#[] results in weird stuff&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;img&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;01,02,..&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;.jpg
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;0&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;zmv -n &lt;span class=&#34;s1&#34;&gt;&amp;#39;(bind.*)&amp;#39;&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;$1${(l:2::0:)}$((i++))&amp;#39;&lt;/span&gt; on bind.c, bind.h, bind.o
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mv -- bind.c bind.c000
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mv -- bind.h bind.h001
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mv -- bind.o bind.o002
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;running-other-programs&#34; class=&#34;anchor-header&#34;&gt;running other programs &lt;a class=&#34;anchor-link&#34; href=&#34;#running-other-programs&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;zmv -p cp -o&lt;span class=&#34;s1&#34;&gt;&amp;#39;-r&amp;#39;&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;img/(*)&amp;#39;&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;tmp/${1:u}&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;zmv -C -o &lt;span class=&#34;s1&#34;&gt;&amp;#39;-r&amp;#39;&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;img/(*)&amp;#39;&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;tmp/${1:u}&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;either recursively copies contents of img/ to tmp/ uppercasing
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;zmw-examples&#34; class=&#34;anchor-header&#34;&gt;zmW examples &lt;a class=&#34;anchor-link&#34; href=&#34;#zmw-examples&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Using zmv -w or zmW is very effective through globbing.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#  upcase the filename but not the extension&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;zmW &lt;span class=&#34;s1&#34;&gt;&amp;#39;*.jpg&amp;#39;&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;${*:u}.jpg&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# pad left with zero&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;zmW &lt;span class=&#34;s1&#34;&gt;&amp;#39;img*.jpg&amp;#39;&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;img${(l:2::0:)*}.jpg&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# replace spaces with hyphens&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;zmW &lt;span class=&#34;s1&#34;&gt;&amp;#39;*&amp;#39;&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;${*// /-}&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;better than
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;zmv &lt;span class=&#34;s1&#34;&gt;&amp;#39;*-*&amp;#39;&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;${f// /-}&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;zmv &lt;span class=&#34;s1&#34;&gt;&amp;#39;*-*&amp;#39;&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;${f:gs/ /-}&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;zoptions&#34; class=&#34;anchor-header&#34;&gt;zoptions &lt;a class=&#34;anchor-link&#34; href=&#34;#zoptions&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;-f  force overwriting of destination files.  Not currently passed
    down to the mv/cp/ln command due to vagaries of implementations
    (but you can use -o-f to do that).
-i  interactive: show each line to be executed and ask the user whether
    to execute it.  Y or y will execute it, anything else will skip it.
    Note that you just need to type one character.
-n  no execution: print what would happen, but don&#39;t do it.
-q  Turn bare glob qualifiers off:  now assumed by default, so this
    has no effect.
-Q  Force bare glob qualifiers on.  Don&#39;t turn this on unless you are
    actually using glob qualifiers in a pattern (see below).
-s  symbolic, passed down to ln; only works with zln or z?? -L.
-v  verbose: print line as it&#39;s being executed.
-o &amp;lt;optstring&amp;gt;
    &amp;lt;optstring&amp;gt; will be split into words and passed down verbatim
    to the cp, ln or mv called to perform the work.  It will probably
    begin with a `-&#39;.
-p &amp;lt;program&amp;gt;
    Call &amp;lt;program&amp;gt; instead of cp, ln or mv.  Whatever it does, it should
    at least understand the form &#39;&amp;lt;program&amp;gt; -- &amp;lt;oldname&amp;gt; &amp;lt;newname&amp;gt;&#39;,
    where &amp;lt;oldname&amp;gt; and &amp;lt;newname&amp;gt; are filenames generated. &amp;lt;program&amp;gt;
    will be split into words.
-P &amp;lt;program&amp;gt;
    As -p, but the program doesn&#39;t understand the &amp;quot;--&amp;quot; convention.
    In this case the file names must already be sane.
-w  Pick out wildcard parts of the pattern, as described above, and
    implicitly add parentheses for referring to them.
-W  Just like -w, with the addition of turning wildcards in the
    replacement pattern into sequential ${1} .. ${N} references.
-C
-L
-M  Force cp, ln or mv, respectively, regardless of the name of the
    function.
&lt;/code&gt;&lt;/pre&gt;
&lt;h1 id=&#34;zz&#34; class=&#34;anchor-header&#34;&gt;zz &lt;a class=&#34;anchor-link&#34; href=&#34;#zz&#34; aria-hidden=&#34;true&#34;&gt;
&lt;svg xmlns=&#34;http://www.w3.org/2000/svg&#34; class=&#34;anchor-icon&#34; width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; fill=&#34;none&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;
  &lt;path stroke=&#34;none&#34; d=&#34;M0 0h24v24H0z&#34; fill=&#34;none&#34;/&gt;
  &lt;path d=&#34;M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5&#34; /&gt;
  &lt;path d=&#34;M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5&#34; /&gt;
&lt;/svg&gt;
&lt;/a&gt;&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;specific computers&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# broot setup for specific computers&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[[&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$HOST&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;schnell&amp;#39;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;||&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$HOST&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;adagio&amp;#39;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;]]&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;k&#34;&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;       &lt;span class=&#34;c1&#34;&gt;#code&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;bd (using tarrasch function for zsh because bd install doesn&amp;rsquo;t seem to
work)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;fzf a good addition too and works rather like the fuzzy find on broot&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;globbing seems to be inconsistent over the different versions of zsh&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;operations on multiple extensions ls *.{jpg,png}&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;list only directories
(&lt;a href=&#34;https://unix.stackexchange.com/a/502028/582800&#34;&gt;post&lt;/a&gt;) ls -d – *(&lt;em&gt;)
ls -ld – *(&lt;/em&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    
  </channel>
</rss>
