This commit is contained in:
SqrtMinusOne 2024-01-05 15:30:50 +00:00
parent aea10438f7
commit 27bd842c36
5 changed files with 78 additions and 2 deletions

View file

@ -3910,6 +3910,11 @@
<td>wireshark</td>
<td></td>
</tr>
<tr>
<td>dev</td>
<td>python-chess</td>
<td></td>
</tr>
</tbody>
</table>
<h3 id="manifests">Manifests</h3>

View file

@ -905,7 +905,7 @@ Emacs is also particularly great at writing Lisp code, e.g. Clojure, Common Lisp
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-emacs-lisp" data-lang="emacs-lisp"><span style="display:flex;"><span>(<span style="color:#008000">setq</span> <span style="color:#19177c">default-input-method</span> <span style="color:#ba2121">&#34;russian-computer&#34;</span>)
</span></span></code></pre></div><p><code>M-x delete-horizontal-space</code> doesn&rsquo;t feel that useful to me.</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-emacs-lisp" data-lang="emacs-lisp"><span style="display:flex;"><span>(<span style="color:#19177c">general-define-key</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000">:keymaps</span> <span style="color:#19177c">&#39;global-map</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000">:keymaps</span> <span style="color:#19177c">&#39;global</span>
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">&#34;M-\\&#34;</span> <span style="color:#00f">#&#39;</span><span style="color:#19177c">toggle-input-method</span>)
</span></span></code></pre></div><h4 id="other-small-packages">Other small packages</h4>
<h5 id="managing-parentheses--smartparens">Managing parentheses (smartparens)</h5>
@ -6121,7 +6121,7 @@ Some other optimization settings:</p>
</span></span><span style="display:flex;"><span> (<span style="color:#008000">with-current-buffer</span> <span style="color:#19177c">telega-buffer</span>
</span></span><span style="display:flex;"><span> (<span style="color:#008000">dolist</span> (<span style="color:#19177c">file</span> <span style="color:#19177c">files</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">telega-chatbuf-attach-file</span> <span style="color:#19177c">file</span>))))
</span></span></code></pre></div><p>Save a file to a dired buffer.</p>
</span></span></code></pre></div><p>Save a telega file to a dired buffer.</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-emacs-lisp" data-lang="emacs-lisp"><span style="display:flex;"><span>(<span style="color:#008000">defun</span> <span style="color:#19177c">my/telega-save-to-dired</span> (<span style="color:#19177c">msg</span> <span style="color:#19177c">arg</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#008000">interactive</span>
</span></span><span style="display:flex;"><span> (<span style="color:#00f">list</span> (<span style="color:#19177c">telega-msg-for-interactive</span>)
@ -6150,6 +6150,16 @@ Some other optimization settings:</p>
</span></span><span style="display:flex;"><span> <span style="color:#19177c">type</span>
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">mml-minibuffer-read-description</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">mml-minibuffer-read-disposition</span> <span style="color:#19177c">type</span> <span style="color:#800">nil</span> <span style="color:#19177c">file</span>))))))
</span></span></code></pre></div><p>Save a notmuch file to a dired buffer.</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-emacs-lisp" data-lang="emacs-lisp"><span style="display:flex;"><span>(<span style="color:#008000">defun</span> <span style="color:#19177c">my/notmuch-save-to-dired</span> (<span style="color:#19177c">arg</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#008000">interactive</span>
</span></span><span style="display:flex;"><span> (<span style="color:#00f">list</span> (<span style="color:#00f">prefix-numeric-value</span> <span style="color:#19177c">current-prefix-arg</span>)))
</span></span><span style="display:flex;"><span> (<span style="color:#008000">if</span> (<span style="color:#00f">eq</span> <span style="color:#19177c">arg</span> <span style="color:#666">4</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#008000">let</span> ((<span style="color:#19177c">default-directory</span>
</span></span><span style="display:flex;"><span> (<span style="color:#008000">with-current-buffer</span> (<span style="color:#19177c">my/get-good-buffer</span> <span style="color:#19177c">&#39;dired-mode</span> <span style="color:#ba2121">&#34;Dired buffer: &#34;</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">dired-current-directory</span>))))
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">notmuch-show-save-part</span>))
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">notmuch-show-save-part</span>)))
</span></span></code></pre></div><p>Attach files to ement.</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-emacs-lisp" data-lang="emacs-lisp"><span style="display:flex;"><span>(<span style="color:#008000">defun</span> <span style="color:#19177c">my/dired-attach-to-ement</span> (<span style="color:#19177c">files</span> <span style="color:#19177c">ement-buffer</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#008000">interactive</span>
@ -6194,6 +6204,11 @@ Some other optimization settings:</p>
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">general-define-key</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000">:keymaps</span> <span style="color:#19177c">&#39;telega-msg-button-map</span>
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">&#34;S&#34;</span> <span style="color:#00f">#&#39;</span><span style="color:#19177c">my/telega-save-to-dired</span>))
</span></span></code></pre></div><div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-emacs-lisp" data-lang="emacs-lisp"><span style="display:flex;"><span>(<span style="color:#008000">with-eval-after-load</span> <span style="color:#19177c">&#39;notmuch</span>
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">general-define-key</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000">:keymaps</span> <span style="color:#19177c">&#39;notmuch-show-mode-map</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000">:states</span> <span style="color:#19177c">&#39;normal</span>
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">&#34;. s&#34;</span> <span style="color:#00f">#&#39;</span><span style="color:#19177c">my/notmuch-save-to-dired</span>))
</span></span></code></pre></div><h3 id="shells-terminals">Shells / Terminals</h3>
<h4 id="vterm">vterm</h4>
<p>My terminal emulator of choice.</p>
@ -9352,6 +9367,16 @@ Some other optimization settings:</p>
</span></span></code></pre></div><p>Finally, something that I can bind to a key.</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-emacs-lisp" data-lang="emacs-lisp"><span style="display:flex;"><span>(<span style="color:#19177c">my-leader-def</span>
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">&#34;i&#34;</span> <span style="color:#00f">#&#39;</span><span style="color:#19177c">my/index-nav</span>)
</span></span></code></pre></div><h4 id="export-tree">Export tree</h4>
<p>I also need the tree to use in my <code>sqrt-data</code>, so let&rsquo;s export this to JSON.</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-emacs-lisp" data-lang="emacs-lisp"><span style="display:flex;"><span>(<span style="color:#008000">defun</span> <span style="color:#19177c">my/index-export</span> (<span style="color:#19177c">file</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#008000">interactive</span> (<span style="color:#00f">list</span> (<span style="color:#19177c">read-file-name</span> <span style="color:#ba2121">&#34;File: &#34;</span> <span style="color:#ba2121">&#34;~/logs-sync/data/index.json&#34;</span>)))
</span></span><span style="display:flex;"><span> (<span style="color:#008000">let</span> ((<span style="color:#19177c">full-tree</span> (<span style="color:#19177c">my/index--tree-retrive</span>)))
</span></span><span style="display:flex;"><span> (<span style="color:#008000">unless</span> (<span style="color:#00f">file-exists-p</span> (<span style="color:#00f">file-name-directory</span> <span style="color:#19177c">file</span>))
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">make-directory</span> (<span style="color:#00f">file-name-directory</span> <span style="color:#19177c">file</span>) <span style="color:#800">t</span>))
</span></span><span style="display:flex;"><span> (<span style="color:#008000">with-temp-file</span> <span style="color:#19177c">file</span>
</span></span><span style="display:flex;"><span> (<span style="color:#00f">insert</span> (<span style="color:#19177c">json-encode</span> <span style="color:#19177c">full-tree</span>))
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">json-pretty-print-buffer</span>))))
</span></span></code></pre></div><h3 id="utilities">Utilities</h3>
<h4 id="pass">pass</h4>
<p>I use <a href="https://www.passwordstore.org/">pass</a> as my password manager. Expectedly, there is Emacs frontend for it.</p>
@ -9499,6 +9524,45 @@ Some other optimization settings:</p>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>(<span style="color:#008000">setq</span> <span style="color:#19177c">calendar-latitude</span> <span style="color:#666">59.9375</span>)
</span></span><span style="display:flex;"><span>(<span style="color:#008000">setq</span> <span style="color:#19177c">calendar-longitude</span> <span style="color:#666">30.308611</span>)
</span></span></code></pre></div><h3 id="chess">Chess</h3>
<h4 id="chess-dot-el">chess.el</h4>
<p>chess.el is a package by John Wiegley.</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-emacs-lisp" data-lang="emacs-lisp"><span style="display:flex;"><span>(<span style="color:#008000">use-package</span> <span style="color:#19177c">chess</span>
</span></span><span style="display:flex;"><span> <span style="color:#008000">:straight</span> <span style="color:#800">t</span>)
</span></span></code></pre></div><h4 id="render-pgn">Render PGN</h4>
<p>A Python script to convert a PGN string to SVG:</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">import</span> <span style="color:#00f;font-weight:bold">chess</span>
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">import</span> <span style="color:#00f;font-weight:bold">chess.svg</span>
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">import</span> <span style="color:#00f;font-weight:bold">chess.pgn</span>
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">import</span> <span style="color:#00f;font-weight:bold">io</span>
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">import</span> <span style="color:#00f;font-weight:bold">sys</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>pgn <span style="color:#666">=</span> sys<span style="color:#666">.</span>argv[<span style="color:#666">1</span>]
</span></span><span style="display:flex;"><span>out_file <span style="color:#666">=</span> sys<span style="color:#666">.</span>argv[<span style="color:#666">2</span>]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>game <span style="color:#666">=</span> chess<span style="color:#666">.</span>pgn<span style="color:#666">.</span>read_game(io<span style="color:#666">.</span>StringIO(pgn))
</span></span><span style="display:flex;"><span>game <span style="color:#666">=</span> game<span style="color:#666">.</span>end()
</span></span><span style="display:flex;"><span>board <span style="color:#666">=</span> game<span style="color:#666">.</span>board()
</span></span><span style="display:flex;"><span>svg <span style="color:#666">=</span> chess<span style="color:#666">.</span>svg<span style="color:#666">.</span>board(board<span style="color:#666">=</span>board)
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">with</span> <span style="color:#008000">open</span>(out_file, <span style="color:#ba2121">&#39;w&#39;</span>) <span style="color:#008000;font-weight:bold">as</span> f:
</span></span><span style="display:flex;"><span> f<span style="color:#666">.</span>write(svg)
</span></span></code></pre></div><p><code>python-chess</code> is installed in the <code>dev</code> profile because <code>python3</code> is also there.</p>
<p>An <code>org-babel</code> block:</p>
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-emacs-lisp" data-lang="emacs-lisp"><span style="display:flex;"><span>(<span style="color:#008000">setq</span> <span style="color:#19177c">my/chess-python</span> <span style="color:#ba2121">&#34;/home/pavel/.guix-extra-profiles/dev/dev/bin/python3&#34;</span>)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>(<span style="color:#008000">defun</span> <span style="color:#19177c">org-babel-execute:pgn</span> (<span style="color:#19177c">body</span> <span style="color:#19177c">params</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#008000">let</span> ((<span style="color:#19177c">out-file</span> (<span style="color:#008000">or</span> (<span style="color:#19177c">alist-get</span> <span style="color:#008000">:file</span> <span style="color:#19177c">params</span>)
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">org-babel-temp-file</span> <span style="color:#ba2121">&#34;pgn-&#34;</span> <span style="color:#ba2121">&#34;.svg&#34;</span>))))
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">org-babel-eval</span>
</span></span><span style="display:flex;"><span> (<span style="color:#00f">format</span> <span style="color:#ba2121">&#34;%s %s &#39;%s&#39; &#39;%s&#39;&#34;</span> <span style="color:#19177c">my/chess-python</span>
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">&#34;~/bin/python-scripts/render_pgn.py&#34;</span>
</span></span><span style="display:flex;"><span> <span style="color:#19177c">body</span> <span style="color:#19177c">out-file</span>)
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">&#34;&#34;</span>)
</span></span><span style="display:flex;"><span> <span style="color:#800">nil</span>))
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>(<span style="color:#008000">defvar</span> <span style="color:#19177c">org-babel-default-header-args:pgn</span>
</span></span><span style="display:flex;"><span> <span style="color:#666">&#39;</span>((<span style="color:#008000">:results</span> <span style="color:#666">.</span> <span style="color:#ba2121">&#34;file&#34;</span>) (<span style="color:#008000">:exports</span> <span style="color:#666">.</span> <span style="color:#ba2121">&#34;results&#34;</span>))
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">&#34;Default arguments for evaluating a pgn source block.&#34;</span>)
</span></span></code></pre></div><h3 id="fun">Fun</h3>
<h4 id="discord-integration">Discord integration</h4>
<p>Integration with Discord. Shows which file is being edited in Emacs.</p>
@ -10248,6 +10312,7 @@ I&rsquo;ve seen a couple of cases where people would swap their username and ema
<li><a href="#org-tree">Org tree</a></li>
<li><a href="#commands">Commands</a></li>
<li><a href="#navigation">Navigation</a></li>
<li><a href="#export-tree">Export tree</a></li>
</ul>
</li>
<li><a href="#utilities">Utilities</a>
@ -10268,6 +10333,12 @@ I&rsquo;ve seen a couple of cases where people would swap their username and ema
<li><a href="#calendar">Calendar</a></li>
</ul>
</li>
<li><a href="#chess">Chess</a>
<ul>
<li><a href="#chess-dot-el">chess.el</a></li>
<li><a href="#render-pgn">Render PGN</a></li>
</ul>
</li>
<li><a href="#fun">Fun</a>
<ul>
<li><a href="#discord-integration">Discord integration</a></li>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 120 KiB

After

Width:  |  Height:  |  Size: 120 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 59 KiB

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 66 KiB

After

Width:  |  Height:  |  Size: 67 KiB