mirror of
https://github.com/SqrtMinusOne/sqrtminusone.github.io.git
synced 2025-12-10 15:53:03 +03:00
deploy: a343912c38
This commit is contained in:
parent
76675506c9
commit
7247901e01
5 changed files with 330 additions and 218 deletions
|
|
@ -134,6 +134,15 @@
|
|||
</span></span><span style="display:flex;"><span> <span style="color:#008000">export</span> <span style="color:#19177c">GIT_SSL_CAINFO</span><span style="color:#666">=</span><span style="color:#ba2121">"</span><span style="color:#19177c">$SSL_CERT_FILE</span><span style="color:#ba2121">"</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">export</span> <span style="color:#19177c">CURL_CA_BUNDLE</span><span style="color:#666">=</span><span style="color:#ba2121">"</span><span style="color:#19177c">$SSL_CERT_FILE</span><span style="color:#ba2121">"</span>
|
||||
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">fi</span>
|
||||
</span></span></code></pre></div><h3 id="ssh-agent">ssh-agent</h3>
|
||||
<p>I’m paranoid so I encrypt my SSH keys.</p>
|
||||
<p>Got the idea for below from <a href="https://wiki.archlinux.org/title/SSH_keys#SSH_agents">ArchWiki</a>:</p>
|
||||
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">if</span> ! pgrep -u <span style="color:#ba2121">"</span><span style="color:#19177c">$USER</span><span style="color:#ba2121">"</span> ssh-agent > /dev/null; <span style="color:#008000;font-weight:bold">then</span>
|
||||
</span></span><span style="display:flex;"><span> ssh-agent -t 1h > <span style="color:#ba2121">"</span><span style="color:#19177c">$XDG_RUNTIME_DIR</span><span style="color:#ba2121">/ssh-agent.env"</span>
|
||||
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">fi</span>
|
||||
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">if</span> <span style="color:#666">[[</span> ! -f <span style="color:#ba2121">"</span><span style="color:#19177c">$SSH_AUTH_SOCK</span><span style="color:#ba2121">"</span> <span style="color:#666">]]</span>; <span style="color:#008000;font-weight:bold">then</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">source</span> <span style="color:#ba2121">"</span><span style="color:#19177c">$XDG_RUNTIME_DIR</span><span style="color:#ba2121">/ssh-agent.env"</span> >/dev/null
|
||||
</span></span><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">fi</span>
|
||||
</span></span></code></pre></div><h3 id="guix-settings">Guix settings</h3>
|
||||
<p>Enable extra profiles</p>
|
||||
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span><span style="color:#008000;font-weight:bold">if</span> <span style="color:#666">[</span> -z <span style="color:#ba2121">"</span><span style="color:#19177c">$IS_ANDROID</span><span style="color:#ba2121">"</span> <span style="color:#666">]</span> <span style="color:#666">&&</span> <span style="color:#666">[</span> -z <span style="color:#ba2121">"</span><span style="color:#19177c">$NO_GUIX</span><span style="color:#ba2121">"</span> <span style="color:#666">]</span> ; <span style="color:#008000;font-weight:bold">then</span>
|
||||
|
|
@ -1194,6 +1203,7 @@
|
|||
<li><a href="#environment">Environment</a></li>
|
||||
<li><a href="#my-paths">My paths</a></li>
|
||||
<li><a href="#ssl-certs">SSL Certs</a></li>
|
||||
<li><a href="#ssh-agent">ssh-agent</a></li>
|
||||
<li><a href="#guix-settings">Guix settings</a></li>
|
||||
<li><a href="#other-package-managers">Other package managers</a>
|
||||
<ul>
|
||||
|
|
|
|||
|
|
@ -891,7 +891,7 @@
|
|||
</span></span><span style="display:flex;"><span> (<span style="color:#666">,</span>(<span style="color:#19177c">kbd</span> <span style="color:#ba2121">"s-P"</span>) <span style="color:#666">.</span> <span style="color:#19177c">async-shell-command</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#666">,</span>(<span style="color:#19177c">kbd</span> <span style="color:#ba2121">"s-;"</span>) <span style="color:#666">.</span> <span style="color:#19177c">my/exwm-apps-hydra/body</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#666">,</span>(<span style="color:#19177c">kbd</span> <span style="color:#ba2121">"s--"</span>) <span style="color:#666">.</span> <span style="color:#19177c">password-store-completion</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#666">,</span>(<span style="color:#19177c">kbd</span> <span style="color:#ba2121">"s-="</span>) <span style="color:#666">.</span> <span style="color:#19177c">my/emojify-type</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#666">,</span>(<span style="color:#19177c">kbd</span> <span style="color:#ba2121">"s-="</span>) <span style="color:#666">.</span> <span style="color:#19177c">emoji-insert</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#666">,</span>(<span style="color:#19177c">kbd</span> <span style="color:#ba2121">"s-i"</span>) <span style="color:#666">.</span> <span style="color:#666">,</span>(<span style="color:#19177c">my/app-command</span> <span style="color:#ba2121">"copyq menu"</span>))
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#408080;font-style:italic">;; Basic controls</span>
|
||||
|
|
@ -1209,7 +1209,7 @@
|
|||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">add-hook</span> <span style="color:#19177c">'exwm-update-class-hook</span> <span style="color:#00f">#'</span><span style="color:#19177c">my/exwm-update-class</span>)
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">require</span> <span style="color:#19177c">'exwm-randr</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">exwm-randr-enable</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">exwm-randr-mode</span> <span style="color:#666">1</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">start-process-shell-command</span> <span style="color:#ba2121">"xrandr"</span> <span style="color:#800">nil</span> <span style="color:#ba2121">"~/bin/scripts/screen-layout"</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">when</span> (<span style="color:#19177c">string=</span> (<span style="color:#00f">system-name</span>) <span style="color:#ba2121">"violet"</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq</span> <span style="color:#19177c">my/exwm-another-monitor</span> <span style="color:#ba2121">"DP-1"</span>)
|
||||
|
|
@ -4569,6 +4569,16 @@
|
|||
</span></span><span style="display:flex;"><span> <span style="color:#666">#</span><span style="color:#19177c">:start</span> (<span style="color:#00f">make-forkexec-constructor</span> <span style="color:#666">'</span>(<span style="color:#ba2121">"sqrt_data_agent_mpd"</span>))
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#666">#</span><span style="color:#19177c">:stop</span> (<span style="color:#00f">make-kill-destructor</span>)
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#666">#</span><span style="color:#19177c">:requires</span> <span style="color:#666">'</span>(<span style="color:#19177c">mpd</span>)))
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span>(<span style="color:#008000;font-weight:bold">define </span><span style="color:#19177c">deterred-mpd</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">make</span> <span style="color:#19177c"><service></span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#666">#</span><span style="color:#19177c">:provides</span> <span style="color:#666">'</span>(<span style="color:#19177c">deterred-mpd</span>)
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#666">#</span><span style="color:#19177c">:respawn?</span> <span style="color:#800">#t</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#666">#</span><span style="color:#19177c">:start</span> (<span style="color:#00f">make-forkexec-constructor</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#666">'</span>(<span style="color:#ba2121">"python"</span> <span style="color:#ba2121">"/home/pavel/10-19 Code/13 Other Projects/13.02 sqrt-data/13.02.R Repos/13.02.R.05 deterred/watchers/deterred-mpd.py"</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"--db"</span> <span style="color:#ba2121">"/home/pavel/.deterred/database.db"</span>))
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#666">#</span><span style="color:#19177c">:stop</span> (<span style="color:#00f">make-kill-destructor</span>)
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#666">#</span><span style="color:#19177c">:requires</span> <span style="color:#666">'</span>(<span style="color:#19177c">mpd</span>)))
|
||||
</span></span></code></pre></div><h3 id="gnu-mcron">GNU Mcron</h3>
|
||||
<p><a href="https://www.gnu.org/software/mcron/">GNU Mcron</a> is a replacement for cron, written in Scheme.</p>
|
||||
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-scheme" data-lang="scheme"><span style="display:flex;"><span>(<span style="color:#008000;font-weight:bold">define </span><span style="color:#19177c">mcron</span>
|
||||
|
|
@ -4716,6 +4726,7 @@
|
|||
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-scheme" data-lang="scheme"><span style="display:flex;"><span>(<span style="color:#00f">register-services</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#19177c">mpd</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#19177c">sqrt-data-agent-mpd</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#19177c">deterred-mpd</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#19177c">mcron</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#19177c">aw-server</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#19177c">aw-watcher-afk</span>
|
||||
|
|
@ -4737,6 +4748,7 @@
|
|||
</span></span></code></pre></div><p>Run services</p>
|
||||
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-scheme" data-lang="scheme"><span style="display:flex;"><span>(<span style="color:#008000">for-each </span><span style="color:#19177c">start</span> <span style="color:#666">'</span>(<span style="color:#19177c">mpd</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#19177c">sqrt-data-agent-mpd</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#19177c">deterred-mpd</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#19177c">mcron</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#19177c">aw-server</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#19177c">aw-watcher-afk</span>
|
||||
|
|
|
|||
|
|
@ -123,6 +123,10 @@ Emacs is also particularly great at writing Lisp code, e.g. Clojure, Common Lisp
|
|||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>ytel</td>
|
||||
<td>327340a95c4ff9cffd171f6bd937c6041f63add7</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>org-roam dailies</td>
|
||||
<td>d2648918fcc338bd5c1cd6d5c0aa60a65077ccf7</td>
|
||||
|
|
@ -2281,6 +2285,7 @@ Emacs is also particularly great 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">lsp-headerline-breadcrumb-enable</span> <span style="color:#800">nil</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq</span> <span style="color:#19177c">lsp-modeline-code-actions-enable</span> <span style="color:#800">nil</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq</span> <span style="color:#19177c">lsp-modeline-diagnostics-enable</span> <span style="color:#800">nil</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq</span> <span style="color:#19177c">lsp-volar-take-over-mode</span> <span style="color:#800">nil</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">add-to-list</span> <span style="color:#19177c">'lsp-language-id-configuration</span> <span style="color:#666">'</span>(<span style="color:#19177c">svelte-mode</span> <span style="color:#666">.</span> <span style="color:#ba2121">"svelte"</span>)))
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span>(<span style="color:#008000">use-package</span> <span style="color:#19177c">lsp-ui</span>
|
||||
|
|
@ -2773,7 +2778,7 @@ Emacs is also particularly great at writing Lisp code, e.g. Clojure, Common Lisp
|
|||
</span></span><span style="display:flex;"><span>(<span style="color:#008000">use-package</span> <span style="color:#19177c">copilot</span>
|
||||
</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">"copilot-emacs/copilot.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:#008000">or</span> <span style="color:#19177c">my/remote-server</span> <span style="color:#19177c">my/is-termux</span>))
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:disabled</span> <span style="color:#800">t</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">'emacs-startup-hook</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">lambda</span> ()
|
||||
|
|
@ -2941,11 +2946,13 @@ Emacs is also particularly great at writing Lisp code, e.g. Clojure, Common Lisp
|
|||
</span></span><span style="display:flex;"><span>(<span style="color:#19177c">add-hook</span> <span style="color:#19177c">'web-mode-hook</span> <span style="color:#00f">#'</span><span style="color:#19177c">my/web-mode-lsp</span>)
|
||||
</span></span></code></pre></div><p>Vue settings</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/web-mode-vue-setup</span> (<span style="color:#008000">&rest</span> <span style="color:#19177c">_</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">when</span> (<span style="color:#19177c">string-match-p</span> (<span style="color:#008000">rx</span> <span style="color:#ba2121">".vue"</span> <span style="color:#19177c">eos</span>) (<span style="color:#00f">buffer-file-name</span>))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq-local</span> <span style="color:#19177c">web-mode-script-padding</span> <span style="color:#666">0</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq-local</span> <span style="color:#19177c">web-mode-style-padding</span> <span style="color:#666">0</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq-local</span> <span style="color:#19177c">create-lockfiles</span> <span style="color:#800">nil</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq-local</span> <span style="color:#19177c">web-mode-enable-auto-pairing</span> <span style="color:#800">nil</span>)))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">let</span> ((<span style="color:#19177c">filename</span> (<span style="color:#00f">buffer-file-name</span>)))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">when</span> (<span style="color:#008000">and</span> (<span style="color:#00f">stringp</span> <span style="color:#19177c">filename</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">string-match-p</span> (<span style="color:#008000">rx</span> <span style="color:#ba2121">".vue"</span> <span style="color:#19177c">eos</span>) <span style="color:#19177c">filename</span>))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq-local</span> <span style="color:#19177c">web-mode-script-padding</span> <span style="color:#666">0</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq-local</span> <span style="color:#19177c">web-mode-style-padding</span> <span style="color:#666">0</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq-local</span> <span style="color:#19177c">create-lockfiles</span> <span style="color:#800">nil</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq-local</span> <span style="color:#19177c">web-mode-enable-auto-pairing</span> <span style="color:#800">nil</span>))))
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span>(<span style="color:#19177c">add-hook</span> <span style="color:#19177c">'web-mode-hook</span> <span style="color:#19177c">'my/web-mode-vue-setup</span>)
|
||||
</span></span><span style="display:flex;"><span>(<span style="color:#19177c">add-hook</span> <span style="color:#19177c">'editorconfig-after-apply-functions</span> <span style="color:#19177c">'my/web-mode-vue-setup</span>)
|
||||
|
|
@ -3339,7 +3346,7 @@ Emacs is also particularly great at writing Lisp code, e.g. Clojure, Common Lisp
|
|||
</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">langtool-language-tool-server-jar</span> <span style="color:#ba2121">"/home/pavel/bin/LanguageTool-6.4/languagetool-server.jar"</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq</span> <span style="color:#19177c">langtool-mother-tongue</span> <span style="color:#ba2121">"ru"</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq</span> <span style="color:#19177c">langtool-default-language</span> <span style="color:#ba2121">"en-US"</span>))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq</span> <span style="color:#19177c">langtool-default-language</span> <span style="color:#ba2121">"ru-RU"</span>))
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span>(<span style="color:#19177c">my-leader-def</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:infix</span> <span style="color:#ba2121">"L"</span>
|
||||
|
|
@ -4307,6 +4314,7 @@ Emacs is also particularly great at writing Lisp code, e.g. Clojure, Common Lisp
|
|||
</span></span><span style="display:flex;"><span> <span style="color:#666">`</span>((<span style="color:#19177c">emacs-lisp</span> <span style="color:#666">.</span> <span style="color:#800">t</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">python</span> <span style="color:#666">.</span> <span style="color:#800">t</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">sql</span> <span style="color:#666">.</span> <span style="color:#800">t</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">sqlite</span> <span style="color:#666">.</span> <span style="color:#800">t</span>)
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#408080;font-style:italic">;; (typescript .t)</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">hy</span> <span style="color:#666">.</span> <span style="color:#800">t</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">shell</span> <span style="color:#666">.</span> <span style="color:#800">t</span>)
|
||||
|
|
@ -4771,6 +4779,9 @@ Emacs is also particularly great at writing Lisp code, e.g. Clojure, Common Lisp
|
|||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">with-eval-after-load</span> <span style="color:#19177c">'org</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">my-leader-def</span> <span style="color:#ba2121">"ol"</span> <span style="color:#00f">#'</span><span style="color:#19177c">org-clock-agg</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">org-clock-agg-node-format</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"%-%(+ title-width)t %20c %8z %s/%S"</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq</span> <span style="color:#19177c">org-clock-agg-node-title-width-delta</span> <span style="color:#666">47</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">push</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">cons</span> <span style="color:#ba2121">"Agenda+Archive"</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">append</span>
|
||||
|
|
@ -4892,6 +4903,21 @@ Emacs is also particularly great at writing Lisp code, e.g. Clojure, Common Lisp
|
|||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:keymaps</span> <span style="color:#19177c">'org-mode-map</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:infix</span> <span style="color:#ba2121">"SPC"</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"C"</span> <span style="color:#00f">#'</span><span style="color:#19177c">my/org-clock-recent</span>))
|
||||
</span></span></code></pre></div><h6 id="fix-tasks-without-task-kind">Fix tasks without TASK_KIND</h6>
|
||||
<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/org-fix-task-kind</span> ()
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">interactive</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">let</span> ((<span style="color:#19177c">entries</span> (<span style="color:#19177c">org-ql-query</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:select</span> <span style="color:#00f">#'</span><span style="color:#19177c">element-with-markers</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:from</span> (<span style="color:#00f">current-buffer</span>)
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:where</span> <span style="color:#666">'</span>(<span style="color:#008000">and</span> (<span style="color:#19177c">olp</span> <span style="color:#ba2121">"Tasks"</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">not</span> (<span style="color:#19177c">property</span> <span style="color:#ba2121">"TASK_KIND"</span>))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">clocked</span>)))))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">org-fold-show-all</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">dolist</span> (<span style="color:#19177c">entry</span> <span style="color:#19177c">entries</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">let</span> ((<span style="color:#19177c">marker</span> (<span style="color:#19177c">org-element-property</span> <span style="color:#008000">:org-marker</span> <span style="color:#19177c">entry</span>)))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">org-with-point-at</span> <span style="color:#19177c">marker</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">let</span> ((<span style="color:#19177c">value</span> (<span style="color:#19177c">org-read-property-value</span> <span style="color:#ba2121">"TASK_KIND"</span>)))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">org-set-property</span> <span style="color:#ba2121">"TASK_KIND"</span> <span style="color:#19177c">value</span>)))))))
|
||||
</span></span></code></pre></div><h5 id="org-super-agenda">org-super-agenda</h5>
|
||||
<p><a href="https://github.com/alphapapa/org-super-agenda">org-super-agenda</a> is alphapapa’s extension to group items in org-agenda. I don’t use it instead of the standard agenda, but <code>org-ql</code> uses it for some of its views.</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">org-super-agenda</span>
|
||||
|
|
@ -4983,6 +5009,30 @@ Emacs is also particularly great at writing Lisp code, e.g. Clojure, Common Lisp
|
|||
</span></span><span style="display:flex;"><span> <span style="color:#666">`</span>((<span style="color:#19177c">category</span> <span style="color:#666">,@</span><span style="color:#19177c">categories</span>))))
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:sort</span> <span style="color:#666">'</span>(<span style="color:#19177c">priority</span> <span style="color:#19177c">todo</span> <span style="color:#19177c">deadline</span>)
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:super-groups</span> <span style="color:#666">'</span>((<span style="color:#008000">:auto-outline-path-file</span> <span style="color:#800">t</span>)))))
|
||||
</span></span></code></pre></div><h6 id="items-clocked-or-closed-today">Items clocked or closed today</h6>
|
||||
<p>Some custom functions to account for <code>org-extend-today-until</code>. Needed because sometimes my daily reviews cross 00:00.</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/org-ql-clocked-today</span> ()
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">interactive</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">let</span> ((<span style="color:#19177c">today</span> (<span style="color:#00f">format-time-string</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"%Y-%m-%d"</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">days-to-time</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">-</span> (<span style="color:#19177c">org-today</span>) (<span style="color:#19177c">time-to-days</span> <span style="color:#666">0</span>))))))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">org-ql-search</span> (<span style="color:#19177c">org-agenda-files</span>) <span style="color:#666">`</span>(<span style="color:#19177c">clocked</span> <span style="color:#008000">:from</span> <span style="color:#666">,</span><span style="color:#19177c">today</span>)
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:title</span> <span style="color:#ba2121">"Clocked today"</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:sort</span> <span style="color:#666">'</span>(<span style="color:#19177c">todo</span> <span style="color:#19177c">priority</span> <span style="color:#19177c">date</span>)
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:super-groups</span> <span style="color:#666">'</span>((<span style="color:#008000">:auto-outline-path-file</span> <span style="color:#800">t</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">:auto-todo</span> <span style="color:#800">t</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/org-ql-closed-today</span> ()
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">interactive</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">let</span> ((<span style="color:#19177c">today</span> (<span style="color:#00f">format-time-string</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"%Y-%m-%d"</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">days-to-time</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">-</span> (<span style="color:#19177c">org-today</span>) (<span style="color:#19177c">time-to-days</span> <span style="color:#666">0</span>))))))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">org-ql-search</span> (<span style="color:#19177c">org-agenda-files</span>) <span style="color:#666">`</span>(<span style="color:#19177c">closed</span> <span style="color:#008000">:from</span> <span style="color:#666">,</span><span style="color:#19177c">today</span>)
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:title</span> <span style="color:#ba2121">"Closed today"</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:sort</span> <span style="color:#666">'</span>(<span style="color:#19177c">todo</span> <span style="color:#19177c">priority</span> <span style="color:#19177c">date</span>)
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:super-groups</span> <span style="color:#666">'</span>((<span style="color:#008000">:auto-outline-path-file</span> <span style="color:#800">t</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">:auto-todo</span> <span style="color:#800">t</span>)))))
|
||||
</span></span></code></pre></div><h6 id="configuring-views">Configuring views</h6>
|
||||
<p>Putting all the above in <code>org-ql-views</code>.</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">org-ql-views</span>
|
||||
|
|
@ -5006,13 +5056,8 @@ Emacs is also particularly great at writing Lisp code, e.g. Clojure, Common Lisp
|
|||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:sort</span> <span style="color:#666">'</span>(<span style="color:#19177c">todo</span> <span style="color:#19177c">priority</span> <span style="color:#19177c">date</span>)
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:super-groups</span> <span style="color:#666">'</span>((<span style="color:#008000">:auto-outline-path-file</span> <span style="color:#800">t</span>))))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">cons</span> <span style="color:#ba2121">"Review: Recently timestamped"</span> <span style="color:#00f">#'</span><span style="color:#19177c">my/org-ql-view-recent-items</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">cons</span> <span style="color:#ba2121">"Review: Unlinked to meetings"</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">list</span> <span style="color:#008000">:buffers-files</span> <span style="color:#00f">#'</span><span style="color:#19177c">org-agenda-files</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:query</span> <span style="color:#666">'</span>(<span style="color:#008000">and</span> (<span style="color:#19177c">todo</span> <span style="color:#ba2121">"DONE"</span> <span style="color:#ba2121">"NO"</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">not</span> (<span style="color:#19177c">property</span> <span style="color:#ba2121">"MEETING"</span>))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">ts</span> <span style="color:#008000">:from</span> <span style="color:#666">-7</span>))
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:super-groups</span> <span style="color:#666">'</span>((<span style="color:#008000">:auto-outline-path-file</span> <span style="color:#800">t</span>))))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">cons</span> <span style="color:#ba2121">"Review: Meeting"</span> <span style="color:#00f">#'</span><span style="color:#19177c">my/org-ql-meeting-tasks</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">cons</span> <span style="color:#ba2121">"Review: Clocked today"</span> <span style="color:#00f">#'</span><span style="color:#19177c">my/org-ql-clocked-today</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">cons</span> <span style="color:#ba2121">"Review: Closed today"</span> <span style="color:#00f">#'</span><span style="color:#19177c">my/org-ql-closed-today</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">cons</span> <span style="color:#ba2121">"Fix: tasks without TASK_KIND"</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">lambda</span> ()
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">interactive</span>)
|
||||
|
|
@ -5387,7 +5432,7 @@ Emacs is also particularly great at writing Lisp code, e.g. Clojure, Common Lisp
|
|||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">thread-last</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#19177c">heading</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">substring-no-properties</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">replace-regexp-in-string</span> (<span style="color:#008000">rx</span> (<span style="color:#19177c">|</span> <span style="color:#ba2121">"("</span> <span style="color:#ba2121">"["</span>) (<span style="color:#00f">+</span> <span style="color:#19177c">alnum</span>) (<span style="color:#19177c">|</span> <span style="color:#ba2121">"]"</span> <span style="color:#ba2121">")"</span>)) <span style="color:#ba2121">""</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">replace-regexp-in-string</span> (<span style="color:#008000">rx</span> (<span style="color:#19177c">|</span> <span style="color:#ba2121">"("</span> <span style="color:#ba2121">"["</span>) (<span style="color:#00f">+</span> <span style="color:#19177c">nonl</span>) (<span style="color:#19177c">|</span> <span style="color:#ba2121">"]"</span> <span style="color:#ba2121">")"</span>)) <span style="color:#ba2121">""</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">replace-regexp-in-string</span> (<span style="color:#008000">rx</span> <span style="color:#ba2121">" "</span> (<span style="color:#00f">+</span> (<span style="color:#008000">or</span> <span style="color:#19177c">digit</span> <span style="color:#ba2121">"."</span>))) <span style="color:#ba2121">" "</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">replace-regexp-in-string</span> (<span style="color:#008000">rx</span> (<span style="color:#00f">+</span> <span style="color:#ba2121">" "</span>)) <span style="color:#ba2121">" "</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">string-trim</span>)))
|
||||
|
|
@ -5661,6 +5706,11 @@ Emacs is also particularly great at writing Lisp code, e.g. Clojure, Common Lisp
|
|||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span>(<span style="color:#19177c">add-hook</span> <span style="color:#19177c">'org-journal-after-entry-create-hook</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#00f">#'</span><span style="color:#19177c">my/set-journal-header</span>)
|
||||
</span></span></code></pre></div><p>Also, a function to decrypt the current file:</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/org-journal-decrypt</span> ()
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"Decrypt the current org journal 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:#19177c">org-journal-tags--ensure-decrypted</span>))
|
||||
</span></span></code></pre></div><h4 id="bibliography">Bibliography</h4>
|
||||
<p>I use <a href="https://www.zotero.org/">Zotero</a> to manage my bibliograhy.</p>
|
||||
<p>There is a Zotero extension called <a href="https://retorque.re/zotero-better-bibtex/">better bibtex</a>, which allows for having one bibtex file that is always syncronized with the library. That comes quite handy for Emacs integration.</p>
|
||||
|
|
@ -5784,22 +5834,64 @@ Didn’t work out as I expected, so I’ve made <code>org-journal-tags</
|
|||
<p>Capture templates for <code>org-roam-capture</code>. As for now, nothing too complicated here.</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">org-roam-capture-templates</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#666">`</span>((<span style="color:#ba2121">"d"</span> <span style="color:#ba2121">"default"</span> <span style="color:#19177c">plain</span> <span style="color:#ba2121">"%?"</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:if-new</span> (<span style="color:#19177c">file+head</span> <span style="color:#ba2121">"%<%Y%m%d%H%M%S>-${slug}.org"</span> <span style="color:#ba2121">"#+title: ${title}\n"</span>)
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:target</span> (<span style="color:#19177c">file+head</span> <span style="color:#ba2121">"%<%Y%m%d%H%M%S>-${slug}.org"</span> <span style="color:#ba2121">"#+title: ${title}\n"</span>)
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:unnarrowed</span> <span style="color:#800">t</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#ba2121">"f"</span> <span style="color:#ba2121">"fleeting"</span> <span style="color:#19177c">plain</span> <span style="color:#ba2121">"%?"</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:target</span> (<span style="color:#19177c">file+head</span> <span style="color:#ba2121">"%<%Y%m%d%H%M%S>-${slug}.org"</span> <span style="color:#ba2121">"#+title: ${title}\n#+filetags: :fleeting:\n"</span>)
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:unnarrowed</span> <span style="color:#800">t</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#ba2121">"e"</span> <span style="color:#ba2121">"encrypted"</span> <span style="color:#19177c">plain</span> <span style="color:#ba2121">"%?"</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:if-new</span> (<span style="color:#19177c">file+head</span> <span style="color:#ba2121">"%<%Y%m%d%H%M%S>-${slug}.org.gpg"</span> <span style="color:#ba2121">"#+title: ${title}\n"</span>)
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:target</span> (<span style="color:#19177c">file+head</span> <span style="color:#ba2121">"%<%Y%m%d%H%M%S>-${slug}.org.gpg"</span> <span style="color:#ba2121">"#+title: ${title}\n"</span>)
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:unnarrowed</span> <span style="color:#800">t</span>)))
|
||||
</span></span></code></pre></div><h5 id="org-roam-ql">org-roam-ql</h5>
|
||||
<p><a href="https://github.com/ahmed-shariff/org-roam-ql">org-roam-ql</a> is a package to query <code>org-roam</code> files like <code>org-ql</code>.</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">org-roam-ql</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:straight</span> <span style="color:#800">t</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:after</span> (<span style="color:#19177c">org-roam</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">general-define-key</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:states</span> <span style="color:#666">'</span>(<span style="color:#19177c">normal</span> <span style="color:#19177c">visual</span>)
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:keymaps</span> <span style="color:#666">'</span>(<span style="color:#19177c">org-roam-ql-mode-map</span>)
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"s"</span> <span style="color:#00f">#'</span><span style="color:#19177c">org-roam-ql-buffer-dispatch</span>))
|
||||
</span></span></code></pre></div><h5 id="finding-nodes">Finding nodes</h5>
|
||||
<p>Find and insert permanent nodes:</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/org-roam-node-find-permanent</span> (<span style="color:#008000">&optional</span> <span style="color:#19177c">other-window</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">interactive</span> <span style="color:#19177c">current-prefix-arg</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">org-roam-node-find</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#19177c">other-window</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#800">nil</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">lambda</span> (<span style="color:#19177c">node</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">not</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">seq-contains-p</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"fleeting"</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">org-roam-node-tags</span> <span style="color:#19177c">node</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/org-roam-node-insert-permanent</span> ()
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">interactive</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">org-roam-node-insert</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">lambda</span> (<span style="color:#19177c">node</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">not</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">seq-contains-p</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">org-roam-node-tags</span> <span style="color:#19177c">node</span>)
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"fleeting"</span>)))))
|
||||
</span></span></code></pre></div><p>List unprocessed fleeting notes:</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/org-roam-ql-fleeting</span> ()
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">interactive</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">org-roam-ql-search</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#666">'</span>(<span style="color:#19177c">tags</span> <span style="color:#ba2121">"fleeting"</span>)
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"Fleeting notes"</span>))
|
||||
</span></span></code></pre></div><h5 id="keybindings-4">Keybindings</h5>
|
||||
<p>A set of keybindings to quickly access things in Org Roam.</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">with-eval-after-load</span> <span style="color:#19177c">'org-roam</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">my-leader-def</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:infix</span> <span style="color:#ba2121">"or"</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">""</span> <span style="color:#666">'</span>(<span style="color:#008000">:which-key</span> <span style="color:#ba2121">"org-roam"</span>)
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"i"</span> <span style="color:#00f">#'</span><span style="color:#19177c">org-roam-node-insert</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"r"</span> <span style="color:#00f">#'</span><span style="color:#19177c">org-roam-node-find</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"i"</span> <span style="color:#00f">#'</span><span style="color:#19177c">my/org-roam-node-insert-permanent</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"r"</span> <span style="color:#00f">#'</span><span style="color:#19177c">my/org-roam-node-find-permanent</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"g"</span> <span style="color:#00f">#'</span><span style="color:#19177c">org-roam-graph</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"c"</span> <span style="color:#00f">#'</span><span style="color:#19177c">org-roam-capture</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"b"</span> <span style="color:#00f">#'</span><span style="color:#19177c">org-roam-buffer-toggle</span>)
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"b"</span> <span style="color:#00f">#'</span><span style="color:#19177c">org-roam-buffer-toggle</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"q"</span> <span style="color:#00f">#'</span><span style="color:#19177c">org-roam-ql-search</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"f"</span> <span style="color:#00f">#'</span><span style="color:#19177c">my/org-roam-ql-fleeting</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">'org-roam-mode-map</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:states</span> <span style="color:#666">'</span>(<span style="color:#19177c">normal</span>)
|
||||
|
|
@ -5820,7 +5912,8 @@ Didn’t work out as I expected, so I’ve made <code>org-journal-tags</
|
|||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"a"</span> <span style="color:#00f">#'</span><span style="color:#19177c">org-roam-alias-add</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">:keymap</span> <span style="color:#19177c">'org-mode-map</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"C-c i"</span> <span style="color:#19177c">'org-roam-node-insert</span>))
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"C-c i"</span> <span style="color:#00f">#'</span><span style="color:#19177c">my/org-roam-node-insert-permanent</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"C-c I"</span> <span style="color:#00f">#'</span><span style="color:#19177c">org-roam-node-insert</span>))
|
||||
</span></span></code></pre></div><h5 id="backlinks-count-display">Backlinks count display</h5>
|
||||
<p>Occasionally I want to see how many backlinks a particular page has.</p>
|
||||
<p>This idea came to my mind because I often write a note in the following form:</p>
|
||||
|
|
@ -6065,7 +6158,7 @@ Didn’t work out as I expected, so I’ve made <code>org-journal-tags</
|
|||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">org-roam-node-id</span> (<span style="color:#00f">cdr</span> <span style="color:#19177c">c</span>))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">org-roam-node-title</span> (<span style="color:#00f">cdr</span> <span style="color:#19177c">c</span>)))))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">apply</span> <span style="color:#00f">#'concat</span>)))))
|
||||
</span></span></code></pre></div><h5 id="org-journal-integration">Org Journal integration</h5>
|
||||
</span></span></code></pre></div><h5 id="general-review-logic">General review logic</h5>
|
||||
<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/org-review-get-last-review-date</span> (<span style="color:#19177c">kind</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">let*</span> ((<span style="color:#19177c">start-of-day</span> (<span style="color:#00f">-</span> (<span style="color:#19177c">time-convert</span> <span style="color:#800">nil</span> <span style="color:#00f">#'</span><span style="color:#19177c">integer</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">%</span> (<span style="color:#19177c">time-convert</span> <span style="color:#800">nil</span> <span style="color:#00f">#'</span><span style="color:#19177c">integer</span>)
|
||||
|
|
@ -6083,7 +6176,8 @@ Didn’t work out as I expected, so I’ve made <code>org-journal-tags</
|
|||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">org-journal-tag-reference-date</span> (<span style="color:#00f">car</span> <span style="color:#19177c">query-res</span>))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">pcase</span> <span style="color:#19177c">kind</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">'weekly</span> (<span style="color:#00f">-</span> <span style="color:#19177c">start-of-day</span> (<span style="color:#00f">*</span> <span style="color:#666">7</span> <span style="color:#666">24</span> <span style="color:#666">60</span> <span style="color:#666">60</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/org-review-set-weekly-record</span> ()
|
||||
</span></span></code></pre></div><h5 id="weekly-review">Weekly review</h5>
|
||||
<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/org-review-set-weekly-record</span> ()
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">save-excursion</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">let</span> ((<span style="color:#19177c">last-review-date</span> (<span style="color:#19177c">my/org-review-get-last-review-date</span> <span style="color:#19177c">'weekly</span>)))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">org-journal-tags-prop-apply-delta</span> <span style="color:#008000">:add</span> <span style="color:#666">'</span>(<span style="color:#ba2121">"review.weekly"</span>))
|
||||
|
|
@ -6101,6 +6195,8 @@ Didn’t work out as I expected, so I’ve made <code>org-journal-tags</
|
|||
</span></span></span><span style="display:flex;"><span><span style="color:#ba2121">- [ ] Reconcile ledger
|
||||
</span></span></span><span style="display:flex;"><span><span style="color:#ba2121">- [ ] Clear [[file:~/Downloads][downloads]] and [[file:~/00-Scratch][scratch]] folders
|
||||
</span></span></span><span style="display:flex;"><span><span style="color:#ba2121">- [ ] Process [[file:~/30-39 Life/35 Photos/35.00 Inbox/][photo inbox]]
|
||||
</span></span></span><span style="display:flex;"><span><span style="color:#ba2121">- [ ] Process new [[elisp:(my/org-roam-ql-fleeting)][fleeting notes]] (skip if tired)
|
||||
</span></span></span><span style="display:flex;"><span><span style="color:#ba2121">- [ ] Process new [[https://wallabag.sqrtminusone.xyz/tag/list/t:zk-inbox][zk-inbox]] (skip if tired)
|
||||
</span></span></span><span style="display:flex;"><span><span style="color:#ba2121">- [ ] Process [[file:../inbox.org][inbox]]
|
||||
</span></span></span><span style="display:flex;"><span><span style="color:#ba2121">- [ ] Create [[file:../recurring.org][recurring tasks]] for next week
|
||||
</span></span></span><span style="display:flex;"><span><span style="color:#ba2121">- [ ] Check agenda (-1 / +2 weeks): priorities, deadlines
|
||||
|
|
@ -6108,6 +6204,7 @@ Didn’t work out as I expected, so I’ve made <code>org-journal-tags</
|
|||
</span></span></span><span style="display:flex;"><span><span style="color:#ba2121"> - [[org-ql-search:todo%3A?buffers-files=%22org-agenda-files%22&super-groups=%28%28%3Aauto-outline-path-file%20t%29%29&sort=%28priority%20todo%20deadline%29][org-ql-search: All TODOs]]
|
||||
</span></span></span><span style="display:flex;"><span><span style="color:#ba2121"> - [[org-ql-search:(and (todo) (not (tags \"nots\")) (not (ts :from -14)))?buffers-files=%22org-agenda-files%22&super-groups=%28%28%3Aauto-outline-path-file%20t%29%29&sort=%28priority%20todo%20deadline%29][org-ql-search: Stale tasks]]
|
||||
</span></span></span><span style="display:flex;"><span><span style="color:#ba2121"> - [[org-ql-search:todo%3AWAIT?buffers-files=%22org-agenda-files%22&super-groups=%28%28%3Aauto-outline-path-file%20t%29%29&sort=%28priority%20todo%20deadline%29][org-ql-search: WAIT]]
|
||||
</span></span></span><span style="display:flex;"><span><span style="color:#ba2121"> - [[org-ql-search:todo%3AMAYBE?buffers-files=%22org-agenda-files%22&super-groups=%28%28%3Aauto-outline-path-file%20t%29%29&sort=%28priority%20todo%20deadline%29][org-ql-search: MAYBE]]
|
||||
</span></span></span><span style="display:flex;"><span><span style="color:#ba2121">- [ ] Run auto-archiving
|
||||
</span></span></span><span style="display:flex;"><span><span style="color:#ba2121">- [ ] Review journal records
|
||||
</span></span></span><span style="display:flex;"><span><span style="color:#ba2121">"</span>)
|
||||
|
|
@ -6127,6 +6224,57 @@ Didn’t work out as I expected, so I’ve made <code>org-journal-tags</
|
|||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">org-fold-show-subtree</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">'org-journal</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">my-leader-def</span> <span style="color:#ba2121">"ojw"</span> <span style="color:#00f">#'</span><span style="color:#19177c">my/org-review-weekly</span>))
|
||||
</span></span></code></pre></div><h5 id="daily-review">Daily review</h5>
|
||||
<p>My attempt at a daily review, or an end-of-day routine.</p>
|
||||
<p>I try to keep it under 10-15 minutes.</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/kill-messengers</span> ()
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">interactive</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">when</span> (<span style="color:#00f">get-buffer</span> <span style="color:#19177c">telega-root-buffer-name</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">telega-kill</span> <span style="color:#800">t</span>))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">call-process-shell-command</span> <span style="color:#ba2121">"pkill -f rocketchat-desktop"</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">call-process-shell-command</span> <span style="color:#ba2121">"pkill -f 'bwrap --args 36 element'"</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">call-process-shell-command</span> <span style="color:#ba2121">"pkill -f element-desktop"</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/org-review-set-daily-record</span> ()
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">save-excursion</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">org-journal-tags-prop-apply-delta</span> <span style="color:#008000">:add</span> <span style="color:#666">'</span>(<span style="color:#ba2121">"review.daily"</span>))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">insert</span> <span style="color:#ba2121">"Daily Review"</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">goto-char</span> (<span style="color:#00f">point-max</span>))
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">insert</span> <span style="color:#ba2121">"
|
||||
</span></span></span><span style="display:flex;"><span><span style="color:#ba2121">Maintenance checklist (/delete this/):
|
||||
</span></span></span><span style="display:flex;"><span><span style="color:#ba2121">- [ ] [[elisp:(my/kill-messengers)][Close all messengers]]
|
||||
</span></span></span><span style="display:flex;"><span><span style="color:#ba2121">- [ ] Process [[file:../inbox.org][inbox]]
|
||||
</span></span></span><span style="display:flex;"><span><span style="color:#ba2121">- [ ] Check if clocked tasks are properly annotated
|
||||
</span></span></span><span style="display:flex;"><span><span style="color:#ba2121"> - [[elisp:(my/org-ql-clocked-today)][Tasks clocked today]]
|
||||
</span></span></span><span style="display:flex;"><span><span style="color:#ba2121"> - [[elisp:(my/org-ql-closed-today)][Tasks closed today]]
|
||||
</span></span></span><span style="display:flex;"><span><span style="color:#ba2121">- [ ] Check agenda for the current week
|
||||
</span></span></span><span style="display:flex;"><span><span style="color:#ba2121">
|
||||
</span></span></span><span style="display:flex;"><span><span style="color:#ba2121">/Remember, all of the following headers are optional./
|
||||
</span></span></span><span style="display:flex;"><span><span style="color:#ba2121">
|
||||
</span></span></span><span style="display:flex;"><span><span style="color:#ba2121">*** Happened today
|
||||
</span></span></span><span style="display:flex;"><span><span style="color:#ba2121">Happened to me:
|
||||
</span></span></span><span style="display:flex;"><span><span style="color:#ba2121">- /Anything interesting?/
|
||||
</span></span></span><span style="display:flex;"><span><span style="color:#ba2121">Happened to the world:
|
||||
</span></span></span><span style="display:flex;"><span><span style="color:#ba2121">- /Anything important?/
|
||||
</span></span></span><span style="display:flex;"><span><span style="color:#ba2121">
|
||||
</span></span></span><span style="display:flex;"><span><span style="color:#ba2121">*** New ideas
|
||||
</span></span></span><span style="display:flex;"><span><span style="color:#ba2121">/Write them down in org-roam with the \"fleeting\" tag; leave links here. Perhaps note what sparked that idea?/
|
||||
</span></span></span><span style="display:flex;"><span><span style="color:#ba2121">
|
||||
</span></span></span><span style="display:flex;"><span><span style="color:#ba2121">*** Interactions today
|
||||
</span></span></span><span style="display:flex;"><span><span style="color:#ba2121">/Any meaninginful interactions, conflicts or tensions?/
|
||||
</span></span></span><span style="display:flex;"><span><span style="color:#ba2121">
|
||||
</span></span></span><span style="display:flex;"><span><span style="color:#ba2121">*** Emotions today
|
||||
</span></span></span><span style="display:flex;"><span><span style="color:#ba2121">/How did I feel?/
|
||||
</span></span></span><span style="display:flex;"><span><span style="color:#ba2121">"</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/org-review-daily</span> ()
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">interactive</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">let</span> ((<span style="color:#19177c">org-journal-after-entry-create-hook</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#666">`</span>(<span style="color:#666">,@</span><span style="color:#19177c">org-journal-after-entry-create-hook</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#19177c">my/org-review-set-daily-record</span>)))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">org-journal-new-entry</span> <span style="color:#800">nil</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">org-fold-show-subtree</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">'org-journal</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">my-leader-def</span> <span style="color:#ba2121">"ojd"</span> <span style="color:#00f">#'</span><span style="color:#19177c">my/org-review-daily</span>))
|
||||
</span></span></code></pre></div><h4 id="contacts">Contacts</h4>
|
||||
<p><code>org-contacts</code> is a package to store contacts in an org file.</p>
|
||||
<p>It seems the package has been somewhat revived in the recent months. It used things like <code>lexical-let</code> when I first found it.</p>
|
||||
|
|
@ -6494,7 +6642,7 @@ Didn’t work out as I expected, so I’ve made <code>org-journal-tags</
|
|||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"M-r"</span> <span style="color:#00f">#'</span><span style="color:#19177c">wdired-change-to-wdired-mode</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"<left>"</span> <span style="color:#00f">#'</span><span style="color:#19177c">dired-up-directory</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"<right>"</span> <span style="color:#00f">#'</span><span style="color:#19177c">dired-find-file</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"M-<return>"</span> <span style="color:#00f">#'</span><span style="color:#19177c">dired-open-xdg</span>))
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"M-<return>"</span> <span style="color:#00f">#'</span><span style="color:#19177c">my/dired-open-xdg</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/dired-home</span> ()
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"Open dired at $HOME"</span>
|
||||
|
|
@ -6594,7 +6742,9 @@ Didn’t work out as I expected, so I’ve made <code>org-journal-tags</
|
|||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:hook</span> (<span style="color:#19177c">dired-mode</span> <span style="color:#666">.</span> (<span style="color:#008000">lambda</span> ()
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">unless</span> (<span style="color:#008000">or</span> (<span style="color:#19177c">file-remote-p</span> <span style="color:#19177c">default-directory</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">string-match-p</span> <span style="color:#ba2121">"/gnu/store"</span> <span style="color:#19177c">default-directory</span>))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">nerd-icons-dired-mode</span>)))))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">nerd-icons-dired-mode</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">advice-add</span> <span style="color:#00f">#'</span><span style="color:#19177c">dired-create-empty-file</span> <span style="color:#008000">:around</span> <span style="color:#00f">#'</span><span style="color:#19177c">nerd-icons-dired--refresh-advice</span>))
|
||||
</span></span></code></pre></div><p>Provides stuff like <code>dired-open-xdg</code></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">dired-open</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:straight</span> <span style="color:#800">t</span>
|
||||
|
|
@ -6629,12 +6779,19 @@ Didn’t work out as I expected, so I’ve made <code>org-journal-tags</
|
|||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:after</span> (<span style="color:#19177c">dired</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">"aa"</span> <span style="color:#00f">#'</span><span style="color:#19177c">avy-dired-goto-line</span>))
|
||||
</span></span></code></pre></div><p><a href="https://github.com/stsquad/dired-rsync">dired-rsync</a> allows using <code>rsync</code> instead of the default synchronous copy operation.</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">dired-rsync</span>
|
||||
</span></span></code></pre></div><p><a href="https://github.com/stsquad/dired-rsync">dired-rsync</a> allows using <code>rsync</code> instead of the default synchronous copy operation. The only trouble is that it doesn’t replace <code>dired-do-copy</code> completely, so…</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-rsync--refresh</span> ()
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">cl-loop</span> <span style="color:#19177c">for</span> <span style="color:#19177c">window</span> <span style="color:#19177c">being</span> <span style="color:#19177c">the</span> <span style="color:#19177c">windows</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">do</span> (<span style="color:#008000">with-current-buffer</span> (<span style="color:#00f">window-buffer</span> <span style="color:#19177c">window</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">when</span> (<span style="color:#19177c">derived-mode-p</span> <span style="color:#19177c">'dired-mode</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">revert-buffer</span>)))))
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span>(<span style="color:#008000">use-package</span> <span style="color:#19177c">dired-rsync</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:straight</span> <span style="color:#800">t</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:after</span> (<span style="color:#19177c">dired</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">add-to-list</span> <span style="color:#19177c">'global-mode-string</span> <span style="color:#666">'</span>(<span style="color:#008000">:eval</span> <span style="color:#19177c">dired-rsync-modeline-status</span>))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">add-hook</span> <span style="color:#19177c">'dired-rsync-success-hook</span> <span style="color:#00f">#'</span><span style="color:#19177c">my/dired-rsync--refresh</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">:states</span> <span style="color:#666">'</span>(<span style="color:#19177c">normal</span>)
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:keymaps</span> <span style="color:#666">'</span>(<span style="color:#19177c">dired-mode-map</span>)
|
||||
|
|
@ -6682,6 +6839,14 @@ Didn’t work out as I expected, so I’ve made <code>org-journal-tags</
|
|||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:states</span> <span style="color:#666">'</span>(<span style="color:#19177c">normal</span>)
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:keymaps</span> <span style="color:#19177c">'dired-mode-map</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"H"</span> <span style="color:#00f">#'</span><span style="color:#19177c">my/dired-goto-project-root</span>))
|
||||
</span></span></code></pre></div><p>Open a file with <code>xdg-open</code>. I used <code>dired-open</code> for this before, but I’ve had to abandon the package because it switched from <code>start-process</code> to <code>call-process</code>, which blocks my EXWM.</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-open-xdg</span> ()
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"Try to run </span><span style="color:#19177c">`xdg-open'</span><span style="color:#ba2121"> to open the file under point."</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">interactive</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">when</span> (<span style="color:#19177c">executable-find</span> <span style="color:#ba2121">"xdg-open"</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">let</span> ((<span style="color:#19177c">file</span> (<span style="color:#008000">ignore-errors</span> (<span style="color:#19177c">dired-get-file-for-visit</span>))))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">start-process</span> <span style="color:#ba2121">"dired-open"</span> <span style="color:#800">nil</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"xdg-open"</span> (<span style="color:#19177c">file-truename</span> <span style="color:#19177c">file</span>)))))
|
||||
</span></span></code></pre></div><h4 id="bookmarks">Bookmarks</h4>
|
||||
<p>A simple bookmark list for Dired, mainly to use with TRAMP. I may look into a proper bookmarking system later.</p>
|
||||
<p>Bookmarks are listed in the <a href=".emacs.d/private.el">private.el</a> file, which has an expression like this:</p>
|
||||
|
|
@ -8338,118 +8503,6 @@ Didn’t work out as I expected, so I’ve made <code>org-journal-tags</
|
|||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">when</span> <span style="color:#19177c">alist</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq</span> <span style="color:#19177c">alists</span> (<span style="color:#00f">cons</span> <span style="color:#19177c">alist</span> <span style="color:#19177c">alists</span>)))
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#19177c">alists</span>)))
|
||||
</span></span></code></pre></div><h4 id="ytel">ytel</h4>
|
||||
<p><a href="https://github.com/gRastello/ytel">ytel</a> is a YouTube (actually Invidious) frontend, which lets one search YouTube (whereas the setup with elfeed just lets one view the pre-defined subscriptions).</p>
|
||||
<h5 id="package-config">Package config</h5>
|
||||
<p>The package doesn’t provide evil bindings, so I define my own.</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">ytel</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:straight</span> <span style="color:#800">t</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:commands</span> (<span style="color:#19177c">ytel</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">ytel-invidious-api-url</span> <span style="color:#ba2121">"https://invidio.xamh.de/"</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">:states</span> <span style="color:#666">'</span>(<span style="color:#19177c">normal</span>)
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:keymaps</span> <span style="color:#19177c">'ytel-mode-map</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"q"</span> <span style="color:#00f">#'</span><span style="color:#19177c">ytel-quit</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"s"</span> <span style="color:#00f">#'</span><span style="color:#19177c">ytel-search</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"L"</span> <span style="color:#00f">#'</span><span style="color:#19177c">ytel-search-next-page</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"H"</span> <span style="color:#00f">#'</span><span style="color:#19177c">ytel-search-previous-page</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"RET"</span> <span style="color:#00f">#'</span><span style="color:#19177c">my/ytel-add-emms</span>))
|
||||
</span></span></code></pre></div><h5 id="emms-integration">EMMS integration</h5>
|
||||
<p>And here is the same kind of integration with EMMS as in the elfeed setup:</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">with-eval-after-load</span> <span style="color:#19177c">'emms</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">define-emms-source</span> <span style="color:#19177c">ytel</span> (<span style="color:#19177c">video</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">let</span> ((<span style="color:#19177c">track</span> (<span style="color:#19177c">emms-track</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#19177c">'url</span> (<span style="color:#00f">concat</span> <span style="color:#ba2121">"https://www.youtube.com/watch?v="</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">ytel-video-id</span> <span style="color:#19177c">video</span>)))))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">emms-track-set</span> <span style="color:#19177c">track</span> <span style="color:#19177c">'info-title</span> (<span style="color:#19177c">ytel-video-title</span> <span style="color:#19177c">video</span>))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">emms-track-set</span> <span style="color:#19177c">track</span> <span style="color:#19177c">'info-artist</span> (<span style="color:#19177c">ytel-video-author</span> <span style="color:#19177c">video</span>))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">emms-playlist-insert-track</span> <span style="color:#19177c">track</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/ytel-add-emms</span> ()
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">interactive</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">emms-add-ytel</span> (<span style="color:#19177c">ytel-get-current-video</span>)))
|
||||
</span></span></code></pre></div><h5 id="choosing-instances">Choosing instances</h5>
|
||||
<p>Invidious instances aren’t particularly reliable, but there plenty of them, and there’s an API at <code>invidious.io</code> that returns the available instances and their health, so we can use that.</p>
|
||||
<p>Inspired by <a href="https://github.com/grastello/ytel/issues/17#issuecomment-801745429">this comment</a>.</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/invidious-instances-url</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"https://api.invidious.io/instances.json?pretty=1&sort_by=health"</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/ytel-instances-fetch-json</span> ()
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"Fetch list of invidious instances as json, sorted by health."</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">let</span>
|
||||
</span></span><span style="display:flex;"><span> ((<span style="color:#19177c">url-request-method</span> <span style="color:#ba2121">"GET"</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">url-request-extra-headers</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#666">'</span>((<span style="color:#ba2121">"Accept"</span> <span style="color:#666">.</span> <span style="color:#ba2121">"application/json"</span>))))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">with-current-buffer</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">url-retrieve-synchronously</span> <span style="color:#19177c">my/invidious-instances-url</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">goto-char</span> (<span style="color:#00f">point-min</span>))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">re-search-forward</span> <span style="color:#ba2121">"^$"</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">let*</span> ((<span style="color:#19177c">json-object-type</span> <span style="color:#19177c">'alist</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">json-array-type</span> <span style="color:#19177c">'list</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">json-key-type</span> <span style="color:#19177c">'string</span>))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">json-read</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/ytel-instances-alist-from-json</span> ()
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"Make the json of invidious instances into an alist."</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">let</span> ((<span style="color:#19177c">jsonlist</span> (<span style="color:#19177c">my/ytel-instances-fetch-json</span>))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">inst</span> ()))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">while</span> <span style="color:#19177c">jsonlist</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">push</span> (<span style="color:#00f">concat</span> <span style="color:#ba2121">"https://"</span> (<span style="color:#19177c">caar</span> <span style="color:#19177c">jsonlist</span>)) <span style="color:#19177c">inst</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq</span> <span style="color:#19177c">jsonlist</span> (<span style="color:#00f">cdr</span> <span style="color:#19177c">jsonlist</span>)))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">nreverse</span> <span style="color:#19177c">inst</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/ytel-choose-instance</span> ()
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"Prompt user to choose an invidious instance to use."</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">interactive</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq</span> <span style="color:#19177c">ytel-invidious-api-url</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">or</span> (<span style="color:#008000">condition-case</span> <span style="color:#800">nil</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">completing-read</span> <span style="color:#ba2121">"Using instance: "</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">cl-subseq</span> (<span style="color:#19177c">my/ytel-instances-alist-from-json</span>) <span style="color:#666">0</span> <span style="color:#666">11</span>) <span style="color:#800">nil</span> <span style="color:#ba2121">"confirm"</span> <span style="color:#ba2121">"https://"</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#d2413a;font-weight:bold">error</span> <span style="color:#800">nil</span>))
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"https://invidious.synopyta.org"</span>)))
|
||||
</span></span></code></pre></div><h5 id="some-fixes">Some fixes</h5>
|
||||
<p>At some point in the last 2 years, Invidious started to return videos with <code>null</code> fields. I have no idea what causes that, but I suspect it’s related to YouTube Music.</p>
|
||||
<p><code>ytel</code> hasn’t been updated in these two years, so it doesn’t account for that change.</p>
|
||||
<p>So, let’s skip videos with null titles.</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/ytel-draw--buffer-nil-videos-fix</span> ()
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">let</span> ((<span style="color:#19177c">inhibit-read-only</span> <span style="color:#800">t</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">current-line</span> (<span style="color:#19177c">line-number-at-pos</span>)))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">erase-buffer</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setf</span> <span style="color:#19177c">header-line-format</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">concat</span> <span style="color:#ba2121">"Search results for "</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">propertize</span> <span style="color:#19177c">ytel-search-term</span> <span style="color:#19177c">'face</span> <span style="color:#19177c">'ytel-video-published-face</span>)
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">", page "</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">number-to-string</span> <span style="color:#19177c">ytel-current-page</span>)))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">seq-do</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">lambda</span> (<span style="color:#19177c">v</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">ytel--insert-video</span> <span style="color:#19177c">v</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">insert</span> <span style="color:#ba2121">"\n"</span>))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">seq-filter</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">lambda</span> (<span style="color:#19177c">v</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">ytel-video-title</span> <span style="color:#19177c">v</span>))
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#19177c">ytel-videos</span>))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">goto-char</span> (<span style="color:#00f">point-min</span>))))
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span>(<span style="color:#008000">with-eval-after-load</span> <span style="color:#19177c">'ytel</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">advice-add</span> <span style="color:#00f">#'</span><span style="color:#19177c">ytel--draw-buffer</span> <span style="color:#008000">:override</span> <span style="color:#00f">#'</span><span style="color:#19177c">my/ytel-draw--buffer-nil-videos-fix</span>))
|
||||
</span></span></code></pre></div><p>And render other potentially <code>null</code> fields as “unknown”.</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/ytel--format-unknown-fix</span> (<span style="color:#19177c">fun</span> <span style="color:#008000">&rest</span> <span style="color:#19177c">args</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">if</span> (<span style="color:#00f">car</span> <span style="color:#19177c">args</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">apply</span> <span style="color:#19177c">fun</span> <span style="color:#19177c">args</span>)
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"unknown "</span>))
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span>(<span style="color:#008000">with-eval-after-load</span> <span style="color:#19177c">'ytel</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">advice-add</span> <span style="color:#00f">#'</span><span style="color:#19177c">ytel--format-video-length</span> <span style="color:#008000">:around</span> <span style="color:#00f">#'</span><span style="color:#19177c">my/ytel--format-unknown-fix</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">advice-add</span> <span style="color:#00f">#'</span><span style="color:#19177c">ytel--format-video-published</span> <span style="color:#008000">:around</span> <span style="color:#00f">#'</span><span style="color:#19177c">my/ytel--format-unknown-fix</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">advice-add</span> <span style="color:#00f">#'</span><span style="color:#19177c">ytel--format-video-views</span> <span style="color:#008000">:around</span> <span style="color:#00f">#'</span><span style="color:#19177c">my/ytel--format-unknown-fix</span>))
|
||||
</span></span></code></pre></div><h5 id="some-functions">Some functions</h5>
|
||||
<p>Also, a function to copy a URL to the video under cursor.</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/ytel-kill-url</span> ()
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">interactive</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">kill-new</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">concat</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"https://www.youtube.com/watch?v="</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">ytel-video-id</span> (<span style="color:#19177c">ytel-get-current-video</span>)))))
|
||||
</span></span></code></pre></div><h4 id="eww">EWW</h4>
|
||||
<p>Emacs built-in web browser. <del>I wonder if anyone actually uses it.</del></p>
|
||||
<p>I use it occasionally to open links in elfeed.</p>
|
||||
|
|
@ -8567,25 +8620,31 @@ Didn’t work out as I expected, so I’ve made <code>org-journal-tags</
|
|||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq</span> <span style="color:#19177c">mastodon-active-user</span> <span style="color:#ba2121">"sqrtminusone"</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">my/persp-add-rule</span> <span style="color:#19177c">mastodon-mode</span> <span style="color:#666">0</span> <span style="color:#ba2121">"mastodon"</span>)
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#408080;font-style:italic">;; Hide spoilers by default</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq-default</span> <span style="color:#19177c">mastodon-toot--content-warning</span> <span style="color:#800">t</span>)
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#408080;font-style:italic">;; (setq-default mastodon-toot--content-warning nil)</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq</span> <span style="color:#19177c">mastodon-media--avatar-height</span> <span style="color:#666">40</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq</span> <span style="color:#19177c">mastodon-tl--timeline-posts-count</span> <span style="color:#ba2121">"40"</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq</span> <span style="color:#19177c">mastodon-tl--show-avatars</span> <span style="color:#800">t</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq</span> <span style="color:#19177c">mastodon-tl--horiz-bar</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">make-string</span> <span style="color:#19177c">shr-max-width</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">if</span> (<span style="color:#19177c">char-displayable-p</span> <span style="color:#ba2121">?―</span>) <span style="color:#ba2121">?―</span> <span style="color:#ba2121">?-</span>)))
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#408080;font-style:italic">;; The default emojis take two characters for me</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq</span> <span style="color:#19177c">mastodon-tl--symbols</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#666">'</span>((<span style="color:#19177c">reply</span> <span style="color:#ba2121">""</span> <span style="color:#666">.</span> <span style="color:#ba2121">"R"</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">boost</span> <span style="color:#ba2121">""</span> <span style="color:#666">.</span> <span style="color:#ba2121">"B"</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">favourite</span> <span style="color:#ba2121">""</span> <span style="color:#666">.</span> <span style="color:#ba2121">"F"</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">bookmark</span> <span style="color:#ba2121">""</span> <span style="color:#666">.</span> <span style="color:#ba2121">"K"</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">media</span> <span style="color:#ba2121">""</span> <span style="color:#666">.</span> <span style="color:#ba2121">"[media]"</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">verified</span> <span style="color:#ba2121">""</span> <span style="color:#666">.</span> <span style="color:#ba2121">"V"</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">locked</span> <span style="color:#ba2121">""</span> <span style="color:#666">.</span> <span style="color:#ba2121">"[locked]"</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">private</span> <span style="color:#ba2121">""</span> <span style="color:#666">.</span> <span style="color:#ba2121">"[followers]"</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">direct</span> <span style="color:#ba2121">""</span> <span style="color:#666">.</span> <span style="color:#ba2121">"[direct]"</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">edited</span> <span style="color:#ba2121">""</span> <span style="color:#666">.</span> <span style="color:#ba2121">"[edited]"</span>))))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">mapcar</span> (<span style="color:#008000">lambda</span> (<span style="color:#19177c">item</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setf</span> (<span style="color:#19177c">alist-get</span> (<span style="color:#00f">car</span> <span style="color:#19177c">item</span>) <span style="color:#19177c">mastodon-tl--symbols</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">cdr</span> <span style="color:#19177c">item</span>)))
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#666">'</span>((<span style="color:#19177c">reply</span> <span style="color:#ba2121">""</span> <span style="color:#666">.</span> <span style="color:#ba2121">"R"</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">boost</span> <span style="color:#ba2121">""</span> <span style="color:#666">.</span> <span style="color:#ba2121">"B"</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">favourite</span> <span style="color:#ba2121">""</span> <span style="color:#666">.</span> <span style="color:#ba2121">"F"</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">bookmark</span> <span style="color:#ba2121">""</span> <span style="color:#666">.</span> <span style="color:#ba2121">"K"</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">media</span> <span style="color:#ba2121">""</span> <span style="color:#666">.</span> <span style="color:#ba2121">"[media]"</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">verified</span> <span style="color:#ba2121">""</span> <span style="color:#666">.</span> <span style="color:#ba2121">"V"</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">locked</span> <span style="color:#ba2121">""</span> <span style="color:#666">.</span> <span style="color:#ba2121">"[locked]"</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">private</span> <span style="color:#ba2121">""</span> <span style="color:#666">.</span> <span style="color:#ba2121">"[followers]"</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">direct</span> <span style="color:#ba2121">""</span> <span style="color:#666">.</span> <span style="color:#ba2121">"[direct]"</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">edited</span> <span style="color:#ba2121">""</span> <span style="color:#666">.</span> <span style="color:#ba2121">"[edited]"</span>))))
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span>(<span style="color:#008000">use-package</span> <span style="color:#19177c">mastodon-alt</span>
|
||||
</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">"rougier/mastodon-alt"</span>)
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:disabled</span> <span style="color:#800">t</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:after</span> (<span style="color:#19177c">mastodon</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">mastodon-alt-tl-activate</span>))
|
||||
|
|
@ -8728,12 +8787,15 @@ Didn’t work out as I expected, so I’ve made <code>org-journal-tags</
|
|||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">lambda</span> (<span style="color:#19177c">toot</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">and</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">or</span> (<span style="color:#19177c">not</span> <span style="color:#19177c">hide-replies</span>)
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#408080;font-style:italic">;; Why is the original function inverted??</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">mastodon-tl--is-reply</span> <span style="color:#19177c">toot</span>))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">not</span> (<span style="color:#19177c">mastodon-tl--is-reply</span> <span style="color:#19177c">toot</span>)))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">or</span> (<span style="color:#19177c">not</span> <span style="color:#19177c">hide-boosts</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">not</span> (<span style="color:#19177c">alist-get</span> <span style="color:#19177c">'reblog</span> <span style="color:#19177c">toot</span>)))))
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#19177c">toots</span>)))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">mapc</span> <span style="color:#00f">#'</span><span style="color:#19177c">mastodon-tl--toot</span> <span style="color:#19177c">toots</span>))))
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#19177c">toots</span>))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">start-pos</span> (<span style="color:#00f">point</span>)))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">mapc</span> <span style="color:#00f">#'</span><span style="color:#19177c">mastodon-tl--toot</span> <span style="color:#19177c">toots</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">when</span> <span style="color:#19177c">mastodon-tl--display-media-p</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">save-excursion</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">mastodon-media--inline-images</span> <span style="color:#19177c">start-pos</span> (<span style="color:#00f">point</span>)))))))
|
||||
</span></span></code></pre></div><p>In order to use it, the function has to be passed to <code>mastodon-tl--init</code>:</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/mastodon-tl--get-home</span> (<span style="color:#19177c">hide-replies</span> <span style="color:#19177c">hide-boosts</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">mastodon-tl--init</span>
|
||||
|
|
@ -8844,8 +8906,8 @@ Didn’t work out as I expected, so I’ve made <code>org-journal-tags</
|
|||
</span></span><span style="display:flex;"><span> (<span style="color:#ba2121">"o"</span> <span style="color:#ba2121">"Thread"</span> <span style="color:#19177c">mastodon-tl--thread</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#ba2121">"w"</span> <span style="color:#ba2121">"Browser"</span> <span style="color:#19177c">my/mastodon-toot--browse</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#ba2121">"le"</span> <span style="color:#ba2121">"List edits"</span> <span style="color:#19177c">mastodon-toot--view-toot-edits</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#ba2121">"lf"</span> <span style="color:#ba2121">"List favouriters"</span> <span style="color:#19177c">mastodon-toot--list-toot-favouriters</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#ba2121">"lb"</span> <span style="color:#ba2121">"List boosters"</span> <span style="color:#19177c">mastodon-toot--list-toot-boosters</span>)]
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#ba2121">"lf"</span> <span style="color:#ba2121">"List favouriters"</span> <span style="color:#19177c">mastodon-toot--list-favouriters</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#ba2121">"lb"</span> <span style="color:#ba2121">"List boosters"</span> <span style="color:#19177c">mastodon-toot--list-boosters</span>)]
|
||||
</span></span><span style="display:flex;"><span> [<span style="color:#ba2121">"Toot Actions"</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:class</span> <span style="color:#19177c">transient-row</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#ba2121">"r"</span> <span style="color:#ba2121">"Reply"</span> <span style="color:#19177c">mastodon-toot--reply</span>)
|
||||
|
|
@ -9068,7 +9130,7 @@ Didn’t work out as I expected, so I’ve made <code>org-journal-tags</
|
|||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>tdlib-1.8.16</td>
|
||||
<td>emacs-telega-sever</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>font-gnu-unifont</td>
|
||||
|
|
@ -9079,6 +9141,8 @@ Didn’t work out as I expected, so I’ve made <code>org-journal-tags</
|
|||
</tbody>
|
||||
</table>
|
||||
<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">telega</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#408080;font-style:italic">;; :straight (:type built-in)</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#408080;font-style:italic">;; For now emacs-telega-server is compatible with the latest telega.el</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:straight</span> <span style="color:#800">t</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:if</span> (<span style="color:#19177c">not</span> (<span style="color:#008000">or</span> <span style="color:#19177c">my/remote-server</span>))
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:commands</span> (<span style="color:#19177c">telega</span>)
|
||||
|
|
@ -9090,6 +9154,10 @@ Didn’t work out as I expected, so I’ve made <code>org-journal-tags</
|
|||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">telega-webpage-chat-link</span> <span style="color:#008000">:foreground</span> (<span style="color:#19177c">my/color-value</span> <span style="color:#19177c">'base0</span>)
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:background</span> (<span style="color:#19177c">my/color-value</span> <span style="color:#19177c">'fg</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">when</span> (<span style="color:#00f">file-directory-p</span> <span style="color:#ba2121">"~/.guix-extra-profiles/emacs/"</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq</span> <span style="color:#19177c">telega-server-command</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:#ba2121">"~/.guix-extra-profiles/emacs/emacs/bin/telega-server"</span>)))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq</span> <span style="color:#19177c">telega-emoji-use-images</span> <span style="color:#800">nil</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq</span> <span style="color:#19177c">telega-chat-fill-column</span> <span style="color:#666">80</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq</span> <span style="color:#19177c">telega-completing-read-function</span> <span style="color:#00f">#'completing-read</span>)
|
||||
|
|
@ -9146,7 +9214,7 @@ Didn’t work out as I expected, so I’ve made <code>org-journal-tags</
|
|||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">company-mode</span> <span style="color:#666">1</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">setopt</span> <span style="color:#19177c">visual-fill-column-width</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">+</span> <span style="color:#19177c">telega-chat-fill-column</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">if</span> (<span style="color:#19177c">display-graphic-p</span>) <span style="color:#666">4</span> <span style="color:#666">5</span>)))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">if</span> (<span style="color:#19177c">display-graphic-p</span>) <span style="color:#666">5</span> <span style="color:#666">6</span>)))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq-local</span> <span style="color:#19177c">split-width-threshold</span> <span style="color:#666">1</span>))
|
||||
</span></span><span style="display:flex;"><span>(<span style="color:#19177c">add-hook</span> <span style="color:#19177c">'telega-chat-mode-hook</span> <span style="color:#00f">#'</span><span style="color:#19177c">my/telega-chat-setup</span>)
|
||||
</span></span></code></pre></div><p>And custom online status. By default it marks you online when the Emacs frame is active, but I use EXWM, so I change that to when <code>telega.el</code> buffer is active. Otherwise, I’m online all the time.</p>
|
||||
|
|
@ -9250,7 +9318,7 @@ Didn’t work out as I expected, so I’ve made <code>org-journal-tags</
|
|||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq</span> <span style="color:#19177c">biome-api-try-parse-error-as-response</span> <span style="color:#800">t</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">add-to-list</span> <span style="color:#19177c">'biome-query-coords</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#666">'</span>(<span style="color:#ba2121">"Saint-Petersburg, Russia"</span> <span style="color:#666">59.93863</span> <span style="color:#666">30.31413</span>))
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#666">'</span>(<span style="color:#ba2121">"Saint-Petersburg, Russia"</span> <span style="color:#666">59.942651</span> <span style="color:#666">30.229930</span>))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">add-to-list</span> <span style="color:#19177c">'biome-query-coords</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#666">'</span>(<span style="color:#ba2121">"Tyumen, Russia"</span> <span style="color:#666">57.15222</span> <span style="color:#666">65.52722</span>)))
|
||||
</span></span></code></pre></div><h3 id="reading-documentation">Reading documentation</h3>
|
||||
|
|
@ -9373,7 +9441,7 @@ Didn’t work out as I expected, so I’ve made <code>org-journal-tags</
|
|||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">add-hook</span> <span style="color:#19177c">'sx-question-mode-hook</span> <span style="color:#00f">#'</span><span style="color:#19177c">doom-modeline-mode</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">add-hook</span> <span style="color:#19177c">'sx-question-list-mode-hook</span> <span style="color:#00f">#'</span><span style="color:#19177c">doom-modeline-mode</span>))
|
||||
</span></span></code></pre></div><h3 id="not-an-ai">Not-an-AI</h3>
|
||||
<p>Workflows, which are sometimes referred as “AI”, go in here.</p>
|
||||
<p>Workflows, which are sometimes referred to as “AI”, go in here.</p>
|
||||
<p>I’m technically writing a PhD on a related topic, so I’m a bit more receptive towards the whole thing than most of the community. But I’m still not calling it AI.</p>
|
||||
<h4 id="llms">LLMs</h4>
|
||||
<p>I don’t have access to any proprietary APIs, but LLaMA 3.1 8b with <a href="https://ollama.com/">ollama</a> works for some purposes.</p>
|
||||
|
|
@ -9393,20 +9461,31 @@ Didn’t work out as I expected, so I’ve made <code>org-journal-tags</
|
|||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq</span> <span style="color:#19177c">gptel-backend</span> (<span style="color:#19177c">gptel-make-ollama</span> <span style="color:#ba2121">"Ollama"</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:host</span> <span style="color:#ba2121">"localhost:11434"</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:stream</span> <span style="color:#800">t</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:models</span> <span style="color:#666">'</span>(<span style="color:#ba2121">"llama3.1:latest"</span> <span style="color:#ba2121">"llama3.1:instruct"</span>)))
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:models</span> <span style="color:#666">'</span>(<span style="color:#ba2121">"llama3.1:8b"</span> <span style="color:#ba2121">"deepseek-r1:32b"</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"qwen2.5:32b"</span> <span style="color:#ba2121">"qwen2.5-coder:32b"</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"eva-qwen2.5-q4_k_l-32b:latest"</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"t-pro-1.0-q4_k_m:latest"</span>)))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">gptel-make-openai</span> <span style="color:#ba2121">"OpenRouter"</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:host</span> <span style="color:#ba2121">"openrouter.ai/api"</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:key</span> (<span style="color:#008000">lambda</span> () (<span style="color:#19177c">my/password-store-get-field</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"My_Online/Accounts/openrouter"</span> <span style="color:#ba2121">"api-key"</span>))
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:stream</span> <span style="color:#800">t</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:models</span> <span style="color:#666">'</span>(<span style="color:#ba2121">"anthropic/claude-3.5-haiku"</span>))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq</span> <span style="color:#19177c">gptel--known-backends</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">seq-filter</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">lambda</span> (<span style="color:#19177c">cell</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">not</span> (<span style="color:#00f">equal</span> (<span style="color:#00f">car</span> <span style="color:#19177c">cell</span>) <span style="color:#ba2121">"ChatGPT"</span>)))
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#19177c">gptel--known-backends</span>))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq</span> <span style="color:#19177c">gptel-response-prefix-alist</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#666">'</span>((<span style="color:#19177c">markdown-mode</span> <span style="color:#666">.</span> <span style="color:#ba2121">"[Response] "</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">org-mode</span> <span style="color:#666">.</span> <span style="color:#ba2121">"*** Response: "</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">text-mode</span> <span style="color:#666">.</span> <span style="color:#ba2121">"[Response]"</span>)))
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#408080;font-style:italic">;; (my/gptel-switch-backend "llama3.1:latest")</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:#666">'</span>(<span style="color:#19177c">gptel-mode-map</span>)
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:states</span> <span style="color:#666">'</span>(<span style="color:#00f">insert</span> <span style="color:#19177c">normal</span>)
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"C-<return>"</span> <span style="color:#19177c">'gptel-send</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:#666">'</span>(<span style="color:#19177c">gptel-mode-map</span>)
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:states</span> <span style="color:#666">'</span>(<span style="color:#19177c">normal</span>)
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"?"</span> <span style="color:#00f">#'</span><span style="color:#19177c">gptel-menu</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">gptel-make-gemini</span> <span style="color:#ba2121">"Gemini"</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:key</span> (<span style="color:#19177c">my/password-store-get-field</span> <span style="color:#ba2121">"My_Online/Accounts/google-gemini"</span> <span style="color:#ba2121">"api"</span>)
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:stream</span> <span style="color:#800">t</span>))
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"C-<return>"</span> <span style="color:#19177c">'gptel-send</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"M-o"</span> <span style="color:#00f">#'</span><span style="color:#19177c">gptel-menu</span>))
|
||||
</span></span></code></pre></div><h5 id="ellama">ellama</h5>
|
||||
<p><a href="https://github.com/s-kostyaev/ellama">ellama</a> provides commands that feed things from Emacs buffers into LLMs with various prompts.</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">ellama</span>
|
||||
|
|
@ -9418,19 +9497,26 @@ Didn’t work out as I expected, so I’ve made <code>org-journal-tags</
|
|||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">require</span> <span style="color:#19177c">'llm-ollama</span>)
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#408080;font-style:italic">;; I've looked for this option for 1.5 hours</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq</span> <span style="color:#19177c">ellama-long-lines-length</span> <span style="color:#666">100000</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">my-leader-def</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"aie"</span> <span style="color:#666">'</span>(<span style="color:#008000">:wk</span> <span style="color:#ba2121">"ellama"</span> <span style="color:#008000">:keymap</span> <span style="color:#19177c">ellama-command-map</span>))
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq</span> <span style="color:#19177c">ellama-provider</span> (<span style="color:#19177c">make-llm-ollama</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:chat-model</span> <span style="color:#ba2121">"llama3.1:instruct"</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:embedding-model</span> <span style="color:#ba2121">"llama3.1:instruct"</span>))
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:chat-model</span> <span style="color:#ba2121">"qwen2.5:32b"</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:embedding-model</span> <span style="color:#ba2121">"qwen2.5:32b"</span>))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq</span> <span style="color:#19177c">ellama-coding-provider</span> (<span style="color:#19177c">make-llm-ollama</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:chat-model</span> <span style="color:#ba2121">"qwen2.5-coder:32b"</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:embedding-model</span> <span style="color:#ba2121">"qwen2.5-coder:32b"</span>))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq</span> <span style="color:#19177c">ellama-providers</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#666">`</span>((<span style="color:#ba2121">"llama3.1:8b"</span> <span style="color:#666">.</span> <span style="color:#666">,</span>(<span style="color:#19177c">make-llm-ollama</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:chat-model</span> <span style="color:#ba2121">"llama3.1:latest"</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:embedding-model</span> <span style="color:#ba2121">"llama3.1:latest"</span>))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#ba2121">"llama3.1:instruct"</span> <span style="color:#666">.</span> <span style="color:#666">,</span>(<span style="color:#19177c">make-llm-ollama</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:chat-model</span> <span style="color:#ba2121">"llama3.1:instruct"</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:embedding-model</span> <span style="color:#ba2121">"llama3.1:instruct"</span>)))))
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:chat-model</span> <span style="color:#ba2121">"llama3.1:latest"</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:embedding-model</span> <span style="color:#ba2121">"llama3.1:latest"</span>))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#ba2121">"phi4:latest"</span> <span style="color:#666">.</span> <span style="color:#666">,</span>(<span style="color:#19177c">make-llm-ollama</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:chat-model</span> <span style="color:#ba2121">"phi4:latest"</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:embedding-model</span> <span style="color:#ba2121">"phi4:latest"</span>))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#ba2121">"qwen2.5:32b"</span> <span style="color:#666">.</span> <span style="color:#666">,</span>(<span style="color:#19177c">make-llm-ollama</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:chat-model</span> <span style="color:#ba2121">"qwen2.5:32b"</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:embedding-model</span> <span style="color:#ba2121">"qwen2.5:32b"</span>))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#ba2121">"qwen2.5-coder:32b"</span> <span style="color:#666">.</span> <span style="color:#666">,</span>(<span style="color:#19177c">make-llm-ollama</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:chat-model</span> <span style="color:#ba2121">"qwen2.5-coder:32b"</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:embedding-model</span> <span style="color:#ba2121">"qwen2.5-coder:32b"</span>)))))
|
||||
</span></span></code></pre></div><p>The keybindings are a bit crazy to use even with <code>which-key</code>, so here goes transient.el.</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">with-eval-after-load</span> <span style="color:#19177c">'ellama</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">transient-define-prefix</span> <span style="color:#19177c">my/ellama-transient</span> ()
|
||||
|
|
@ -9447,9 +9533,7 @@ Didn’t work out as I expected, so I’ve made <code>org-journal-tags</
|
|||
</span></span><span style="display:flex;"><span> (<span style="color:#ba2121">"ci"</span> <span style="color:#ba2121">"Improve"</span> <span style="color:#19177c">ellama-code-improve</span>)]
|
||||
</span></span><span style="display:flex;"><span> [<span style="color:#ba2121">"Natural Language"</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:class</span> <span style="color:#19177c">transient-row</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#ba2121">"np"</span> <span style="color:#ba2121">"Proof-read"</span> <span style="color:#19177c">my/ellama-proof-read</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#ba2121">"nw"</span> <span style="color:#ba2121">"Improve wording"</span> <span style="color:#19177c">my/ellama-improve-wording</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#ba2121">"nc"</span> <span style="color:#ba2121">"Improve conciseness"</span> <span style="color:#19177c">my/ellama-improve-concise</span>)]
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#ba2121">"np"</span> <span style="color:#ba2121">"Proof-read"</span> <span style="color:#19177c">my/ellama-proof-read</span>)]
|
||||
</span></span><span style="display:flex;"><span> [<span style="color:#ba2121">"Formatting"</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:class</span> <span style="color:#19177c">transient-row</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#ba2121">"ff"</span> <span style="color:#ba2121">"Format"</span> <span style="color:#19177c">ellama-make-format</span>)
|
||||
|
|
@ -9474,14 +9558,13 @@ Didn’t work out as I expected, so I’ve made <code>org-journal-tags</
|
|||
</span></span><span style="display:flex;"><span> (<span style="color:#ba2121">"sr"</span> <span style="color:#ba2121">"Rename ression"</span> <span style="color:#19177c">ellama-session-rename</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#ba2121">"sd"</span> <span style="color:#ba2121">"Delete session"</span> <span style="color:#19177c">ellama-session-remove</span>)]))
|
||||
</span></span><span style="display:flex;"><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/ellama</span> ()
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">interactive</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">require</span> <span style="color:#19177c">'ellama</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">call-interactively</span> <span style="color:#00f">#'</span><span style="color:#19177c">my/ellama-transient</span>))
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span>(<span style="color:#19177c">my-leader-def</span> <span style="color:#ba2121">"aie"</span> <span style="color:#00f">#'</span><span style="color:#19177c">my/ellama</span>)
|
||||
</span></span></code></pre></div><h5 id="change-natural-text-and-diff-against-the-results">Change natural text & diff against the results</h5>
|
||||
</span></span></code></pre></div><h5 id="change-natural-language-text-and-diff-against-the-results">Change natural-language text & diff against the results</h5>
|
||||
<p>One pattern I often want is to change the given text and compare it to the old version.</p>
|
||||
<p>LLMs aren’t perfectly good at saying what changes they have done, so the pattern here is to query the model and show the changed text together with the diff.</p>
|
||||
<p>So first, I need to diff two strings.</p>
|
||||
|
|
@ -9502,27 +9585,46 @@ Didn’t work out as I expected, so I’ve made <code>org-journal-tags</
|
|||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">delete-file</span> <span style="color:#19177c">file1</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">delete-file</span> <span style="color:#19177c">file2</span>))))
|
||||
</span></span></code></pre></div><p>And the function to do the prompting iself. Llama tends to output in Markdown, so I use a function from Ellama to convert the output back to Org-mode, if necessary.</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/ellama-text-with-diff</span> (<span style="color:#19177c">text</span> <span style="color:#19177c">is-org-mode</span> <span style="color:#19177c">prompt</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">require</span> <span style="color:#19177c">'ellama</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">defun</span> <span style="color:#19177c">my/ellama-proof-read--display</span> (<span style="color:#19177c">text</span> <span style="color:#19177c">is-org-mode</span> <span style="color:#19177c">prompt</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">llm-chat-async</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#19177c">ellama-provider</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">llm-make-chat-prompt</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">format</span> <span style="color:#19177c">prompt</span> <span style="color:#19177c">text</span>))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">lambda</span> (<span style="color:#19177c">changed-text</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">when</span> <span style="color:#19177c">is-org-mode</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq</span> <span style="color:#19177c">changed-text</span> (<span style="color:#19177c">ellama--translate-markdown-to-org-filter</span> <span style="color:#19177c">changed-text</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">"*ellama-diff*"</span>)))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">lambda</span> (<span style="color:#19177c">response</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">let*</span> ((<span style="color:#19177c">parts</span> (<span style="color:#19177c">split-string</span> <span style="color:#19177c">response</span> <span style="color:#ba2121">"-FIXED TEXT ENDS-"</span>))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">changed-text</span> (<span style="color:#00f">nth</span> <span style="color:#666">0</span> <span style="color:#19177c">parts</span>))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">comments</span> (<span style="color:#00f">nth</span> <span style="color:#666">1</span> <span style="color:#19177c">parts</span>))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">buffer</span> (<span style="color:#19177c">generate-new-buffer</span> <span style="color:#ba2121">"*ellama-diff*"</span>)))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">when</span> <span style="color:#19177c">is-org-mode</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq</span> <span style="color:#19177c">changed-text</span> (<span style="color:#19177c">ellama--translate-markdown-to-org-filter</span> <span style="color:#19177c">changed-text</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:#19177c">text-mode</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">insert</span> <span style="color:#19177c">changed-text</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">insert</span> <span style="color:#ba2121">"\n\n"</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">insert</span> (<span style="color:#19177c">my/diff-strings</span> <span style="color:#19177c">text</span> <span style="color:#19177c">changed-text</span>)))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">insert</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">propertize</span> <span style="color:#ba2121">"Changed text:\n"</span> <span style="color:#19177c">'face</span> <span style="color:#19177c">'transient-heading</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">string-trim</span> <span style="color:#19177c">changed-text</span>)
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"\n\n"</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">propertize</span> <span style="color:#ba2121">"Comments:\n"</span> <span style="color:#19177c">'face</span> <span style="color:#19177c">'transient-heading</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">string-trim</span> <span style="color:#19177c">comments</span>)
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"\n\n"</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">propertize</span> <span style="color:#ba2121">"Diff:\n"</span> <span style="color:#19177c">'face</span> <span style="color:#19177c">'transient-heading</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">my/diff-strings</span> <span style="color:#19177c">text</span> <span style="color:#19177c">changed-text</span>)))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">display-buffer</span> <span style="color:#19177c">buffer</span>)))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">lambda</span> (<span style="color:#008000">&rest</span> <span style="color:#19177c">err</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">message</span> <span style="color:#ba2121">"Error: %s"</span> <span style="color:#19177c">err</span>))))
|
||||
</span></span></code></pre></div><p>As for prompts, I like the following prompt to proof-read text. It’s pretty conservative, but good for fixing typos, missing commas, articles, etc.</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/ellama-proof-read-prompt</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"Proof-read the following text. Fix any errors but keep the original style and punctuation, including linebreaks. Print the changed text and nothing else, not even \"Here's the proof-read text\".\n\n %s"</span>)
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"Proof-read the following text. Follow these rules:
|
||||
</span></span></span><span style="display:flex;"><span><span style="color:#ba2121">- Fix all grammar errors
|
||||
</span></span></span><span style="display:flex;"><span><span style="color:#ba2121">- Keep the original style and punctuation, including linebreaks.
|
||||
</span></span></span><span style="display:flex;"><span><span style="color:#ba2121">- Use British spelling
|
||||
</span></span></span><span style="display:flex;"><span><span style="color:#ba2121">- Do not replace ' with ’, and do not touch other such symbols
|
||||
</span></span></span><span style="display:flex;"><span><span style="color:#ba2121">
|
||||
</span></span></span><span style="display:flex;"><span><span style="color:#ba2121">Output the following and nothing else:
|
||||
</span></span></span><span style="display:flex;"><span><span style="color:#ba2121">- The fixed text
|
||||
</span></span></span><span style="display:flex;"><span><span style="color:#ba2121">- The string -FIXED TEXT ENDS-
|
||||
</span></span></span><span style="display:flex;"><span><span style="color:#ba2121">- List of found errors
|
||||
</span></span></span><span style="display:flex;"><span><span style="color:#ba2121">- List of style suggestions
|
||||
</span></span></span><span style="display:flex;"><span><span style="color:#ba2121">%s"</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/ellama--text</span> ()
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">if</span> (<span style="color:#19177c">region-active-p</span>)
|
||||
|
|
@ -9531,21 +9633,8 @@ Didn’t work out as I expected, so I’ve made <code>org-journal-tags</
|
|||
</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/ellama-proof-read</span> (<span style="color:#19177c">text</span> <span style="color:#19177c">is-org-mode</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">interactive</span> (<span style="color:#00f">list</span> (<span style="color:#19177c">my/ellama--text</span>) (<span style="color:#19177c">derived-mode-p</span> <span style="color:#19177c">'org-mode</span>)))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">my/ellama-text-with-diff</span> <span style="color:#19177c">text</span> <span style="color:#19177c">is-org-mode</span> <span style="color:#19177c">my/ellama-proof-read-prompt</span>))
|
||||
</span></span></code></pre></div><p>The following is more expansive, but preserves less of the original text. For instance, it tends to replace my <em>id est</em> and <em>exempli gratia</em>. But sometimes it has good ideas.</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/ellama-improve-wording-prompt</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"Proof-read the following text. Fix any errors and improve wording. Print the changed text and nothing else, not even \"Here's the improved text\".\n\n %s"</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/ellama-improve-wording</span> (<span style="color:#19177c">text</span> <span style="color:#19177c">is-org-mode</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">interactive</span> (<span style="color:#00f">list</span> (<span style="color:#19177c">my/ellama--text</span>) (<span style="color:#19177c">derived-mode-p</span> <span style="color:#19177c">'org-mode</span>)))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">my/ellama-text-with-diff</span> <span style="color:#19177c">text</span> <span style="color:#19177c">is-org-mode</span> <span style="color:#19177c">my/ellama-improve-wording-prompt</span>))
|
||||
</span></span></code></pre></div><p>Also, a prompt to make a text more concise.</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/ellama-improve-concise-prompt</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"Make the following text more concise. Print the changed text and nothing else, not even \"Here's the improved text\".\n\n %s"</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/ellama-improve-concise</span> (<span style="color:#19177c">text</span> <span style="color:#19177c">is-org-mode</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">interactive</span> (<span style="color:#00f">list</span> (<span style="color:#19177c">my/ellama--text</span>) (<span style="color:#19177c">derived-mode-p</span> <span style="color:#19177c">'org-mode</span>)))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">my/ellama-text-with-diff</span> <span style="color:#19177c">text</span> <span style="color:#19177c">is-org-mode</span> <span style="color:#19177c">my/ellama-improve-concise-prompt</span>))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">require</span> <span style="color:#19177c">'ellama</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">my/ellama-proof-read--display</span> <span style="color:#19177c">text</span> <span style="color:#19177c">is-org-mode</span> <span style="color:#19177c">my/ellama-proof-read-prompt</span>))
|
||||
</span></span></code></pre></div><h4 id="podcast-transcripts">Podcast transcripts</h4>
|
||||
<p>In my experience, finding something in a podcast can be particularly troublesome. For instance, at times, I want to refer to a specific line in the podcast to make an <a href="https://github.com/org-roam/org-roam">org-roam</a> node, and I need to check if I got that part right. And I have no reasonable way to get there because audio files, in themselves, don’t allow for <a href="https://en.wikipedia.org/wiki/Random_access">random access</a>, i.e. there are no “landmarks” that point to a particular portion of the file. At least if nothing like a transcript is available.</p>
|
||||
<p>For obvious reasons, podcasts rarely ship with transcripts. So in this <del>post</del> section I’ll be using a speech recognition engine to make up for that. The general idea is to obtain the podcast information from <a href="https://github.com/skeeto/elfeed">elfeed</a>, process it with <a href="https://github.com/openai/whisper">OpenAI Whisper</a> and feed it to <a href="https://github.com/sachac/subed">subed</a> to control the playback in <a href="https://mpv.io/">MPV</a>.</p>
|
||||
|
|
@ -9583,11 +9672,13 @@ Didn’t work out as I expected, so I’ve made <code>org-journal-tags</
|
|||
</ul>
|
||||
<!--listend-->
|
||||
<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/whisper--format-vtt-seconds</span> (<span style="color:#19177c">seconds</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">let*</span> ((<span style="color:#19177c">hours</span> (<span style="color:#00f">/</span> (<span style="color:#00f">floor</span> <span style="color:#19177c">seconds</span>) (<span style="color:#00f">*</span> <span style="color:#666">60</span> <span style="color:#666">60</span>)))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">minutes</span> (<span style="color:#00f">/</span> (<span style="color:#00f">-</span> (<span style="color:#00f">floor</span> <span style="color:#19177c">seconds</span>) (<span style="color:#00f">*</span> <span style="color:#19177c">hours</span> <span style="color:#666">60</span> <span style="color:#666">60</span>)) <span style="color:#666">60</span>))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">sec</span> (<span style="color:#00f">%</span> (<span style="color:#00f">floor</span> <span style="color:#19177c">seconds</span>) <span style="color:#666">60</span>))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">ms</span> (<span style="color:#00f">floor</span> (<span style="color:#00f">*</span> <span style="color:#666">1000</span> (<span style="color:#00f">-</span> <span style="color:#19177c">seconds</span> (<span style="color:#00f">floor</span> <span style="color:#19177c">seconds</span>))))))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">format</span> <span style="color:#ba2121">"%.2d:%.2d:%.2d.%.3d"</span> <span style="color:#19177c">hours</span> <span style="color:#19177c">minutes</span> <span style="color:#19177c">sec</span> <span style="color:#19177c">ms</span>)))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">if</span> (<span style="color:#00f">numberp</span> <span style="color:#19177c">seconds</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">let*</span> ((<span style="color:#19177c">hours</span> (<span style="color:#00f">/</span> (<span style="color:#00f">floor</span> <span style="color:#19177c">seconds</span>) (<span style="color:#00f">*</span> <span style="color:#666">60</span> <span style="color:#666">60</span>)))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">minutes</span> (<span style="color:#00f">/</span> (<span style="color:#00f">-</span> (<span style="color:#00f">floor</span> <span style="color:#19177c">seconds</span>) (<span style="color:#00f">*</span> <span style="color:#19177c">hours</span> <span style="color:#666">60</span> <span style="color:#666">60</span>)) <span style="color:#666">60</span>))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">sec</span> (<span style="color:#00f">%</span> (<span style="color:#00f">floor</span> <span style="color:#19177c">seconds</span>) <span style="color:#666">60</span>))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">ms</span> (<span style="color:#00f">floor</span> (<span style="color:#00f">*</span> <span style="color:#666">1000</span> (<span style="color:#00f">-</span> <span style="color:#19177c">seconds</span> (<span style="color:#00f">floor</span> <span style="color:#19177c">seconds</span>))))))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">format</span> <span style="color:#ba2121">"%.2d:%.2d:%.2d.%.3d"</span> <span style="color:#19177c">hours</span> <span style="color:#19177c">minutes</span> <span style="color:#19177c">sec</span> <span style="color:#19177c">ms</span>))
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">""</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/whisper--save-chucks-vtt</span> (<span style="color:#19177c">path</span> <span style="color:#19177c">data</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">with-temp-file</span> <span style="color:#19177c">path</span>
|
||||
|
|
@ -11656,7 +11747,6 @@ I’ve seen a couple of cases where people would swap their username and ema
|
|||
<li><a href="#notmuch">Notmuch</a></li>
|
||||
<li><a href="#gnus">Gnus</a></li>
|
||||
<li><a href="#emms">EMMS</a></li>
|
||||
<li><a href="#ytel">ytel</a></li>
|
||||
<li><a href="#eww">EWW</a></li>
|
||||
<li><a href="#erc">ERC</a></li>
|
||||
<li><a href="#mastodon">Mastodon</a></li>
|
||||
|
|
|
|||
Binary file not shown.
|
Before Width: | Height: | Size: 62 KiB After Width: | Height: | Size: 62 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 68 KiB After Width: | Height: | Size: 68 KiB |
Loading…
Add table
Reference in a new issue