mirror of
https://github.com/SqrtMinusOne/sqrtminusone.github.io.git
synced 2025-12-11 00:03:02 +03:00
deploy: 57ae084ed9
This commit is contained in:
parent
425170a37e
commit
9757ccaeab
5 changed files with 61 additions and 11 deletions
|
|
@ -3579,6 +3579,11 @@
|
|||
<td>leiningen</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>dev</td>
|
||||
<td>socat</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h3 id="manifests">Manifests</h3>
|
||||
|
|
|
|||
|
|
@ -2038,6 +2038,7 @@ Emacs is also particularly good at writing Lisp code, e.g. Clojure, Common Lisp,
|
|||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:straight</span> (<span style="color:#008000">:host</span> <span style="color:#19177c">github</span> <span style="color:#008000">:repo</span> <span style="color:#ba2121">"SqrtMinusOne/copilot.el"</span> <span style="color:#008000">:files</span> (<span style="color:#ba2121">"dist"</span> <span style="color:#ba2121">"*.el"</span>))
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:commands</span> (<span style="color:#19177c">copilot-mode</span>)
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:if</span> (<span style="color:#19177c">not</span> <span style="color:#19177c">my/remote-server</span>)
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:disabled</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:init</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">add-hook</span> <span style="color:#19177c">'prog-mode-hook</span> <span style="color:#00f">#'</span><span style="color:#19177c">copilot-mode</span>)
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:config</span>
|
||||
|
|
@ -3424,7 +3425,8 @@ Emacs is also particularly good at writing Lisp code, e.g. Clojure, Common Lisp,
|
|||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq-local</span> <span style="color:#19177c">org-format-latex-options</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">plist-put</span> <span style="color:#19177c">org-format-latex-options</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:scale</span> (<span style="color:#00f">*</span> <span style="color:#19177c">org-present-text-scale</span> <span style="color:#19177c">my/org-latex-scale</span> <span style="color:#666">0.5</span>)))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">org-latex-preview</span> <span style="color:#666">'</span>(<span style="color:#666">16</span>))
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#408080;font-style:italic">;; (org-latex-preview '(16))</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#408080;font-style:italic">;; TODO ^somehow this stucks at running LaTeX^</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq-local</span> <span style="color:#19177c">olivetti-body-width</span> <span style="color:#666">60</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">olivetti-mode</span> <span style="color:#666">1</span>))))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq</span> <span style="color:#19177c">org-present-mode-quit-hook</span>
|
||||
|
|
@ -5289,6 +5291,18 @@ Emacs is also particularly good at writing Lisp code, e.g. Clojure, Common Lisp,
|
|||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"gm"</span> <span style="color:#00f">#'</span><span style="color:#19177c">my/elfeed-add-emms</span>))
|
||||
</span></span></code></pre></div><h4 id="rdrview">rdrview</h4>
|
||||
<p><a href="https://github.com/eafer/rdrview">rdrview</a> is a command-line tool to strip webpages from clutter, extracting only parts related to the actual content. It’s a standalone port of the corresponding feature of Firefox, called <a href="https://support.mozilla.org/en-US/kb/firefox-reader-view-clutter-free-web-pages">Reader View</a>.</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Guix dependency</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>rdrview</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>It seems like the tool <a href="https://repology.org/project/rdrview/versions">isn’t available</a> in a whole lot of package repositories, but it’s pretty easy to compile. I’ve put together a <a href="https://github.com/SqrtMinusOne/channel-q/blob/master/rdrview.scm">Guix definition</a>, which <em>one day</em> I’ll submit to upstream.</p>
|
||||
<h5 id="integrating-rdrview-with-emacs">Integrating rdrview with Emacs</h5>
|
||||
<p>Let’s start by integrating <code>rdrview</code> with Emacs. In the general case, we want to fetch both metadata and the actual content from the page.</p>
|
||||
|
|
@ -5686,16 +5700,23 @@ Emacs is also particularly good at writing Lisp code, e.g. Clojure, Common Lisp,
|
|||
<h4 id="podcast-transcripts">Podcast transcripts</h4>
|
||||
<p>Occasionally I want to have a text version of a podcast, for instance to take some notes.</p>
|
||||
<p>In order do do that, I’ve made a <a href="https://github.com/SqrtMinusOne/podcasts-vosk">small script</a> that uses the <a href="https://alphacephei.com/vosk/">Vosk speech recognition toolkit</a> to extract subtitles from an audio file. Here’s a function to invoke that script.</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/invoke-vosk</span> (<span style="color:#19177c">input</span> <span style="color:#19177c">output</span>)
|
||||
<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">defvar</span> <span style="color:#19177c">my/vosk-script-path</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"/home/pavel/Code/system-crafting/podcasts-vosk/"</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"Path to the </span><span style="color:#19177c">`podcasts-vosk'</span><span style="color:#ba2121"> script folder."</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">my/invoke-vosk</span> (<span style="color:#19177c">input</span> <span style="color:#19177c">output</span>)
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"Extract subtitles from audio file.
|
||||
</span></span></span><span style="display:flex;"><span><span style="color:#ba2121">
|
||||
</span></span></span><span style="display:flex;"><span><span style="color:#ba2121">INPUT is the audio file, OUTPUT is the part to the resulting SRT file."</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></span><span style="display:flex;"><span> (<span style="color:#19177c">read-file-name</span> <span style="color:#ba2121">"Input file: "</span> <span style="color:#800">nil</span> <span style="color:#800">nil</span> <span style="color:#800">t</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">read-file-name</span> <span style="color:#ba2121">"SRT file: "</span>)))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">let*</span> ((<span style="color:#19177c">buffer</span> (<span style="color:#19177c">generate-new-buffer</span> <span style="color:#ba2121">"vosk"</span>))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">default-directory</span> <span style="color:#ba2121">"/home/pavel/Code/system-crafting/podcasts-vosk/"</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">default-directory</span> <span style="color:#19177c">my/vosk-script-path</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">proc</span> (<span style="color:#00f">start-process</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"vosk_api"</span> <span style="color:#19177c">buffer</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"/home/pavel/Code/system-crafting/podcasts-vosk/venv/bin/python"</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">concat</span> <span style="color:#19177c">my/vosk-script-path</span> <span style="color:#ba2121">"venv/bin/python"</span>)
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"main.py"</span> <span style="color:#ba2121">"--file-path"</span> <span style="color:#19177c">input</span> <span style="color:#ba2121">"--model-path"</span> <span style="color:#ba2121">"./model-small"</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"--save-path"</span> <span style="color:#19177c">output</span> <span style="color:#ba2121">"--words-per-line"</span> <span style="color:#ba2121">"14"</span>)))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">set-process-sentinel</span>
|
||||
|
|
@ -5704,7 +5725,8 @@ Emacs is also particularly good at writing Lisp code, e.g. Clojure, Common Lisp,
|
|||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">let</span> ((<span style="color:#19177c">status</span> (<span style="color:#00f">process-status</span> <span style="color:#19177c">process</span>))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">code</span> (<span style="color:#00f">process-exit-status</span> <span style="color:#19177c">process</span>)))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">cond</span> ((<span style="color:#008000">and</span> (<span style="color:#00f">eq</span> <span style="color:#19177c">status</span> <span style="color:#19177c">'exit</span>) (<span style="color:#00f">=</span> <span style="color:#19177c">code</span> <span style="color:#666">0</span>))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">message</span> <span style="color:#ba2121">"SRT conversion completed"</span>))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">notifications-notify</span> <span style="color:#008000">:body</span> <span style="color:#ba2121">"SRT conversion completed"</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:title</span> <span style="color:#ba2121">"Vosk API"</span>))
|
||||
</span></span><span style="display:flex;"><span> ((<span style="color:#008000">or</span> (<span style="color:#008000">and</span> (<span style="color:#00f">eq</span> <span style="color:#19177c">status</span> <span style="color:#19177c">'exit</span>) (<span style="color:#00f">></span> <span style="color:#19177c">code</span> <span style="color:#666">0</span>))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">eq</span> <span style="color:#19177c">status</span> <span style="color:#19177c">'signal</span>))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">let</span> ((<span style="color:#19177c">err</span> (<span style="color:#008000">with-current-buffer</span> (<span style="color:#00f">process-buffer</span> <span style="color:#19177c">process</span>)
|
||||
|
|
@ -5713,10 +5735,11 @@ Emacs is also particularly good at writing Lisp code, e.g. Clojure, Common Lisp,
|
|||
</span></span><span style="display:flex;"><span> (<span style="color:#d2413a;font-weight:bold">user-error</span> <span style="color:#ba2121">"Error in Vosk API: %s"</span> <span style="color:#19177c">err</span>)))))))))
|
||||
</span></span></code></pre></div><p>In order to use that, we need to download the file first. So here’s a function that extracts the file name from the URL:</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/get-file-name-from-url</span> (<span style="color:#19177c">url</span>)
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"Extract file name from the URL."</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">string-match</span> (<span style="color:#008000">rx</span> <span style="color:#ba2121">"/"</span> (<span style="color:#00f">+</span> (<span style="color:#19177c">not</span> <span style="color:#ba2121">"/"</span>)) (<span style="color:#ba2121">? </span><span style="color:#ba2121">"/"</span>) <span style="color:#19177c">eos</span>) <span style="color:#19177c">url</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">let</span> ((<span style="color:#19177c">match</span> (<span style="color:#19177c">match-string</span> <span style="color:#666">0</span> <span style="color:#19177c">url</span>)))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">unless</span> <span style="color:#19177c">match</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#d2413a;font-weight:bold">user-error</span> <span style="color:#ba2121">"No file name found. Somehow"</span>))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#d2413a;font-weight:bold">user-error</span> <span style="color:#ba2121">"No file name found. Somehow"</span>))
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#408080;font-style:italic">;; Remove the first /</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq</span> <span style="color:#19177c">match</span> (<span style="color:#00f">substring</span> <span style="color:#19177c">match</span> <span style="color:#666">1</span>))
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#408080;font-style:italic">;; Remove the trailing /</span>
|
||||
|
|
@ -5724,9 +5747,16 @@ Emacs is also particularly good at writing Lisp code, e.g. Clojure, Common Lisp,
|
|||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq</span> <span style="color:#19177c">match</span> (<span style="color:#00f">substring</span> <span style="color:#19177c">match</span> <span style="color:#666">0</span> (<span style="color:#00f">1-</span> (<span style="color:#00f">length</span> <span style="color:#19177c">match</span>)))))
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#19177c">match</span>))
|
||||
</span></span></code></pre></div><p>Now can use that to save the file and invoke the <code>my/invoke-vosk</code> function.</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/elfeed-vosk-get-transcript-new</span> (<span style="color:#19177c">url</span> <span style="color:#19177c">srt-path</span>)
|
||||
<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">'elfeed</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">defvar</span> <span style="color:#19177c">my/elfeed-vosk-podcast-files-directory</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">concat</span> <span style="color:#19177c">elfeed-db-directory</span> <span style="color:#ba2121">"/podcast-files/"</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">my/elfeed-vosk-get-transcript-new</span> (<span style="color:#19177c">url</span> <span style="color:#19177c">srt-path</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">let*</span> ((<span style="color:#19177c">file-name</span> (<span style="color:#19177c">my/get-file-name-from-url</span> <span style="color:#19177c">url</span>))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">file-path</span> (<span style="color:#00f">format</span> <span style="color:#ba2121">"/tmp/%s"</span> <span style="color:#19177c">file-name</span>)))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">file-path</span> (<span style="color:#00f">expand-file-name</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">concat</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#19177c">my/elfeed-vosk-podcast-files-directory</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#19177c">file-name</span>))))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">message</span> <span style="color:#ba2121">"Download started"</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">request</span> <span style="color:#19177c">url</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:type</span> <span style="color:#ba2121">"GET"</span>
|
||||
|
|
@ -5746,6 +5776,7 @@ Emacs is also particularly good at writing Lisp code, e.g. Clojure, Common Lisp,
|
|||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">message</span> <span style="color:#ba2121">"Error!: %S"</span> <span style="color:#19177c">error-thrown</span>))))))
|
||||
</span></span></code></pre></div><p>And the final entrypoint, that opens up the SRT file is it’s available, and queues the download if it’s not.</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/elfeed-vosk-get-transcript</span> (<span style="color:#19177c">entry</span>)
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"Retrieve transcript from the current elfeed ENTRY."</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">interactive</span> (<span style="color:#00f">list</span> <span style="color:#19177c">elfeed-show-entry</span>))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">let</span> ((<span style="color:#19177c">enclosure</span> (<span style="color:#19177c">caar</span> (<span style="color:#19177c">elfeed-entry-enclosures</span> <span style="color:#19177c">entry</span>))))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">unless</span> <span style="color:#19177c">enclosure</span>
|
||||
|
|
@ -5754,8 +5785,22 @@ Emacs is also particularly good at writing Lisp code, e.g. Clojure, Common Lisp,
|
|||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">elfeed-ref-id</span> (<span style="color:#19177c">elfeed-entry-content</span> <span style="color:#19177c">entry</span>))
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">".srt"</span>)))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">if</span> (<span style="color:#00f">file-exists-p</span> <span style="color:#19177c">srt-path</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">find-file-other-window</span> <span style="color:#19177c">srt-path</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">let</span> ((<span style="color:#19177c">buffer</span> (<span style="color:#19177c">find-file-other-window</span> <span style="color:#19177c">srt-path</span>)))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">with-current-buffer</span> <span style="color:#19177c">buffer</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq-local</span> <span style="color:#19177c">elfeed-show-entry</span> <span style="color:#19177c">entry</span>)))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">my/elfeed-vosk-get-transcript-new</span> <span style="color:#19177c">enclosure</span> <span style="color:#19177c">srt-path</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">defun</span> <span style="color:#19177c">my/elfeed-vosk-subed</span> (<span style="color:#19177c">entry</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">interactive</span> (<span style="color:#00f">list</span> <span style="color:#19177c">elfeed-show-entry</span>))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">unless</span> <span style="color:#19177c">entry</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#d2413a;font-weight:bold">user-error</span> <span style="color:#ba2121">"No entry!"</span>))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">unless</span> (<span style="color:#19177c">derived-mode-p</span> <span style="color:#19177c">'subed-mode</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#d2413a;font-weight:bold">user-error</span> <span style="color:#ba2121">"Not subed mode!"</span>))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq-local</span> <span style="color:#19177c">subed-mpv-video-file</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">expand-file-name</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">concat</span> <span style="color:#19177c">my/elfeed-vosk-podcast-files-directory</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">my/get-file-name-from-url</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">caar</span> (<span style="color:#19177c">elfeed-entry-enclosures</span> <span style="color:#19177c">entry</span>))))))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">subed-mpv--play</span> <span style="color:#19177c">subed-mpv-video-file</span>))
|
||||
</span></span></code></pre></div><h3 id="internet-and-multimedia">Internet & Multimedia</h3>
|
||||
<h4 id="notmuch">Notmuch</h4>
|
||||
<p>My notmuch config now resides in <a href="/configs/mail/">Mail.org</a>.</p>
|
||||
|
|
@ -6422,8 +6467,8 @@ Emacs is also particularly good at writing Lisp code, e.g. Clojure, Common Lisp,
|
|||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:commands</span> (<span style="color:#19177c">pomm</span> <span style="color:#19177c">pomm-third-time</span>)
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:init</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">my-leader-def</span> <span style="color:#ba2121">"ap"</span> <span style="color:#00f">#'</span><span style="color:#19177c">pomm-third-time</span>)
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:config</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq</span> <span style="color:#19177c">alert-default-style</span> <span style="color:#19177c">'libnotify</span>)
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:config</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">pomm-mode-line-mode</span>))
|
||||
</span></span></code></pre></div><h4 id="hledger">hledger</h4>
|
||||
<p>is a plain-text double-entry accounting software. I use it for managing my personal finances, and thus far it’s great.</p>
|
||||
|
|
@ -6533,7 +6578,7 @@ Emacs is also particularly good at writing Lisp code, e.g. Clojure, Common Lisp,
|
|||
<tbody>
|
||||
<tr>
|
||||
<td>emacs-vterm</td>
|
||||
<td>A vterm package</td>
|
||||
<td>The vterm package</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>ripgrep</td>
|
||||
|
|
|
|||
BIN
stats/all.png
BIN
stats/all.png
Binary file not shown.
|
Before Width: | Height: | Size: 117 KiB After Width: | Height: | Size: 117 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 63 KiB After Width: | Height: | Size: 62 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 67 KiB After Width: | Height: | Size: 66 KiB |
Loading…
Add table
Reference in a new issue