mirror of
https://github.com/SqrtMinusOne/sqrtminusone.github.io.git
synced 2025-12-11 00:03:02 +03:00
deploy: 280e0ed2e5
This commit is contained in:
parent
6c8120fb07
commit
08e24873ca
5 changed files with 285 additions and 282 deletions
|
|
@ -76,7 +76,7 @@
|
|||
<p>One day we won’t hate one another, no young boy will march to war and I will clean up my Emacs config. But that day isn’t today.</p>
|
||||
</blockquote>
|
||||
<ul>
|
||||
<li>Me, <span class="timestamp-wrapper"><span class="timestamp"><2021-05-27 Thu 17:35> </span></span> in commit 93a0573 T_T</li>
|
||||
<li>Me, <span class="timestamp-wrapper"><span class="timestamp"><2021-05-27 Thu 17:35> </span></span> in commit 93a0573. Adapted from <a href="https://www.youtube.com/watch?v=pIdBinlW40E">The Dark Element - “The Pallbearer Walks Alone”</a>. T_T</li>
|
||||
</ul>
|
||||
<h2 id="introduction">Introduction</h2>
|
||||
<p>My configuration of <a href="https://www.gnu.org/software/emacs/">GNU Emacs</a>, an awesome <del>text editor</del> program that can do almost anything.</p>
|
||||
|
|
@ -156,9 +156,13 @@ Emacs is also particularly good at writing Lisp code, e.g. Clojure, Common Lisp,
|
|||
<td>elfeed-score</td>
|
||||
<td>8e591e0d2afd909ae5be00caf17f9b17c6cd8b61</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>org-trello</td>
|
||||
<td>3f5967a5f63928ea9c8567d8d9f31e84cdbbc21f</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h2 id="bootstrap">Bootstrap</h2>
|
||||
<h2 id="initial-setup">Initial setup</h2>
|
||||
<p>Setting up the environment, performance tuning and a few basic settings.</p>
|
||||
<p>First things first, lexical binding.</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:#408080;font-style:italic">;;; -*- lexical-binding: t -*-</span>
|
||||
|
|
@ -2596,6 +2600,14 @@ Emacs is also particularly good at writing Lisp code, e.g. Clojure, Common Lisp,
|
|||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"n"</span> <span style="color:#19177c">'langtool-goto-next-error</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"p"</span> <span style="color:#19177c">'langtool-goto-previous-error</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"l"</span> <span style="color:#19177c">'langtool-correct-buffer</span>)
|
||||
</span></span></code></pre></div><h4 id="reverso">Reverso</h4>
|
||||
<p><a href="https://github.com/SqrtMinusOne/reverso.el">reverso.el</a> is a package of mine that provides Emacs interface for <a href="https://reverso.net">https://reverso.net</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">use-package</span> <span style="color:#19177c">reverso</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">"SqrtMinusOne/reverso.el"</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">"ar"</span> <span style="color:#00f">#'</span><span style="color:#19177c">reverso</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">reverso-languages</span> <span style="color:#666">'</span>(<span style="color:#19177c">russian</span> <span style="color:#19177c">english</span> <span style="color:#19177c">german</span>)))
|
||||
</span></span></code></pre></div><h3 id="lisp">Lisp</h3>
|
||||
<figure><img src="/ox-hugo/lisp_cycles.png"/>
|
||||
</figure>
|
||||
|
|
@ -2675,10 +2687,11 @@ Emacs is also particularly good at writing Lisp code, e.g. Clojure, Common Lisp,
|
|||
</span></span><span style="display:flex;"><span>(<span style="color:#19177c">add-hook</span> <span style="color:#19177c">'scheme-mode-hook</span> <span style="color:#00f">#'</span><span style="color:#19177c">aggressive-indent-mode</span>)
|
||||
</span></span><span style="display:flex;"><span>(<span style="color:#19177c">add-hook</span> <span style="color:#19177c">'scheme-mode-hook</span> <span style="color:#00f">#'</span><span style="color:#19177c">lispy-mode</span>)
|
||||
</span></span></code></pre></div><h4 id="clips">CLIPS</h4>
|
||||
<p>An honorary Lisp</p>
|
||||
<p>An honorary Lisp.</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">clips-mode</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">:mode</span> <span style="color:#ba2121">"\\.cl\\'"</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">:config</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">add-hook</span> <span style="color:#19177c">'clips-mode</span> <span style="color:#19177c">'lispy-mode</span>))
|
||||
</span></span></code></pre></div><h3 id="python">Python</h3>
|
||||
|
|
@ -2939,6 +2952,35 @@ Emacs is also particularly good at writing Lisp code, e.g. Clojure, Common Lisp,
|
|||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:mode</span> <span style="color:#ba2121">"\\.fish\\'"</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-hook</span> <span style="color:#19177c">'fish-mode-hook</span> <span style="color:#00f">#'</span><span style="color:#19177c">smartparens-mode</span>))
|
||||
</span></span></code></pre></div><h3 id="query-languages">Query languages</h3>
|
||||
<h4 id="sql">SQL</h4>
|
||||
<p><a href="https://github.com/zeroturnaround/sql-formatter">sql-formatter</a> is a nice JavaScript package for pretty-printing SQL queries. It is not packaged for Emacs, so the easiest way to use it seems to be to define a custom formatter via <a href="https://github.com/purcell/emacs-reformatter">reformatter</a>.</p>
|
||||
<p>Also, I’ve made a simple function to switch dialects because I often alternate between them.</p>
|
||||
<p>So far I didn’t find a nice SQL client for Emacs, but I occasionally run SQL queries in Org Mode, so this quite package is handy.</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/sqlformatter-dialect-choice</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#666">'</span>(<span style="color:#ba2121">"db2"</span> <span style="color:#ba2121">"mariadb"</span> <span style="color:#ba2121">"mysql"</span> <span style="color:#ba2121">"n1ql"</span> <span style="color:#ba2121">"plsql"</span> <span style="color:#ba2121">"postgresql"</span> <span style="color:#ba2121">"redshift"</span> <span style="color:#ba2121">"spark"</span> <span style="color:#ba2121">"sql"</span> <span style="color:#ba2121">"tsql"</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">my/sqlformatter-dialect</span> <span style="color:#ba2121">"postgresql"</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/sqlformatter-set-dialect</span> ()
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"Set dialect for sql-formatter"</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">my/sqlformatter-dialect</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">completing-read</span> <span style="color:#ba2121">"Dialect: "</span> <span style="color:#19177c">my/sqlformatter-dialect-choice</span>)))
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span>(<span style="color:#19177c">reformatter-define</span> <span style="color:#19177c">sqlformat</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:program</span> (<span style="color:#19177c">executable-find</span> <span style="color:#ba2121">"sql-formatter"</span>)
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:args</span> <span style="color:#666">`</span>(<span style="color:#ba2121">"-l"</span> <span style="color:#666">,</span><span style="color:#19177c">my/sqlformatter-dialect</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">:keymaps</span> <span style="color:#666">'</span>(<span style="color:#19177c">sql-mode-map</span>)
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"rr"</span> <span style="color:#00f">#'</span><span style="color:#19177c">sqlformat-buffer</span>)
|
||||
</span></span></code></pre></div><h4 id="sparql">SPARQL</h4>
|
||||
<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">sparql-mode</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:straight</span> <span style="color:#800">t</span>)
|
||||
</span></span></code></pre></div><h4 id="graphql">GraphQL</h4>
|
||||
<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">graphql-mode</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:straight</span> <span style="color:#800">t</span>)
|
||||
</span></span></code></pre></div><h3 id="x509">x509</h3>
|
||||
<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">x509-mode</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:straight</span> <span style="color:#800">t</span>)
|
||||
|
|
@ -3017,33 +3059,8 @@ Emacs is also particularly good at writing Lisp code, e.g. Clojure, Common Lisp,
|
|||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:hook</span> (<span style="color:#19177c">lua-mode</span> <span style="color:#666">.</span> <span style="color:#19177c">smartparens-mode</span>))
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span>(<span style="color:#19177c">my/set-smartparens-indent</span> <span style="color:#19177c">'lua-mode</span>)
|
||||
</span></span></code></pre></div><h3 id="sql">SQL</h3>
|
||||
<p><a href="https://github.com/zeroturnaround/sql-formatter">sql-formatter</a> is a nice JavaScript package for pretty-printing SQL queries. It is not packaged for Emacs, so the easiest way to use it seems to be to define a custom formatter via <a href="https://github.com/purcell/emacs-reformatter">reformatter</a>.</p>
|
||||
<p>Also, I’ve made a simple function to switch dialects because I often alternate between them.</p>
|
||||
<p>So far I didn’t find a nice SQL client for Emacs, but I occasionally run SQL queries in Org Mode, so this quite package is handy.</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/sqlformatter-dialect-choice</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#666">'</span>(<span style="color:#ba2121">"db2"</span> <span style="color:#ba2121">"mariadb"</span> <span style="color:#ba2121">"mysql"</span> <span style="color:#ba2121">"n1ql"</span> <span style="color:#ba2121">"plsql"</span> <span style="color:#ba2121">"postgresql"</span> <span style="color:#ba2121">"redshift"</span> <span style="color:#ba2121">"spark"</span> <span style="color:#ba2121">"sql"</span> <span style="color:#ba2121">"tsql"</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">my/sqlformatter-dialect</span> <span style="color:#ba2121">"postgresql"</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/sqlformatter-set-dialect</span> ()
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"Set dialect for sql-formatter"</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">my/sqlformatter-dialect</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">completing-read</span> <span style="color:#ba2121">"Dialect: "</span> <span style="color:#19177c">my/sqlformatter-dialect-choice</span>)))
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span>(<span style="color:#19177c">reformatter-define</span> <span style="color:#19177c">sqlformat</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:program</span> (<span style="color:#19177c">executable-find</span> <span style="color:#ba2121">"sql-formatter"</span>)
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:args</span> <span style="color:#666">`</span>(<span style="color:#ba2121">"-l"</span> <span style="color:#666">,</span><span style="color:#19177c">my/sqlformatter-dialect</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">:keymaps</span> <span style="color:#666">'</span>(<span style="color:#19177c">sql-mode-map</span>)
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"rr"</span> <span style="color:#00f">#'</span><span style="color:#19177c">sqlformat-buffer</span>)
|
||||
</span></span></code></pre></div><h3 id="sparql">SPARQL</h3>
|
||||
<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">sparql-mode</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:straight</span> <span style="color:#800">t</span>)
|
||||
</span></span></code></pre></div><h2 id="org-mode">Org Mode</h2>
|
||||
<p><strong>Org mode</strong> is a tool that leverages plain-text files for various tasks like making notes, literate programming, task management, etc.</p>
|
||||
<p><strong>Org mode</strong> is a tool that leverages plain-text files for tasks like making notes, literate programming, task management, etc.</p>
|
||||
<p>References:</p>
|
||||
<ul>
|
||||
<li><a href="https://orgmode.org/">Org Mode homepage</a></li>
|
||||
|
|
@ -3073,14 +3090,14 @@ Emacs is also particularly good at writing Lisp code, e.g. Clojure, Common Lisp,
|
|||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">lambda</span> ()
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">rainbow-delimiters-mode</span> <span style="color:#666">-1</span>))))
|
||||
</span></span></code></pre></div><h4 id="encryption">Encryption</h4>
|
||||
<p>Setting up <code>org-crypt</code> to encrypt a part of a file.</p>
|
||||
<p>Setting up <code>org-crypt</code> to encrypt parts of 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:#19177c">with-eval-after-load-norem</span> <span style="color:#19177c">'org</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">require</span> <span style="color:#19177c">'org-crypt</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">org-crypt-use-before-save-magic</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq</span> <span style="color:#19177c">org-tags-exclude-from-inheritance</span> (<span style="color:#008000">quote</span> (<span style="color:#ba2121">"crypt"</span>)))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq</span> <span style="color:#19177c">org-crypt-key</span> <span style="color:#ba2121">"C1EC867E478472439CC82410DE004F32AFA00205"</span>))
|
||||
</span></span></code></pre></div><p>This enables encryption for Org segments which are tagged <code>:crypt:</code>.</p>
|
||||
<p>Another way to encrypt org files is to save them with extension <code>.org.gpg</code>. That way by default epa always prompts for a key, which is not what I want when there is in fact only one key to select. So I make the following advice:</p>
|
||||
</span></span></code></pre></div><p>This enables encryption for Org segments tagged <code>:crypt:</code>.</p>
|
||||
<p>Another way to encrypt Org files is to save them with the extension <code>.org.gpg</code>. However, by default <a href="https://www.gnu.org/software/emacs/manual/html_mono/epa.html">EPA</a> always prompts for the key, which is not what I want when there is only one key to select. Hence the following advice:</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/epa--select-keys-around</span> (<span style="color:#19177c">fun</span> <span style="color:#19177c">prompt</span> <span style="color:#19177c">keys</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">if</span> (<span style="color:#00f">=</span> (<span style="color:#19177c">seq-length</span> <span style="color:#19177c">keys</span>) <span style="color:#666">1</span>)
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#19177c">keys</span>
|
||||
|
|
@ -3096,7 +3113,7 @@ Emacs is also particularly good at writing Lisp code, e.g. Clojure, Common Lisp,
|
|||
<ul>
|
||||
<li><code>ox-extra</code> - extensions for org export</li>
|
||||
</ul>
|
||||
<p>This used to have <code>org-contacts</code> and <code>ol-notmuch</code> at some point, but they’ve been migrated to separate repos since.</p>
|
||||
<p>This used to have <code>org-contacts</code> and <code>ol-notmuch</code> at some point, but they have since been migrated to separate repos.</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-contrib</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:straight</span> (<span style="color:#19177c">org-contrib</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:type</span> <span style="color:#19177c">git</span>
|
||||
|
|
@ -3403,8 +3420,8 @@ Emacs is also particularly good at writing Lisp code, e.g. Clojure, Common Lisp,
|
|||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"SPC b"</span> <span style="color:#666">'</span>(<span style="color:#008000">:wk</span> <span style="color:#ba2121">"org-babel"</span>)
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"SPC b"</span> <span style="color:#19177c">org-babel-map</span>))
|
||||
</span></span></code></pre></div><h4 id="managing-a-literate-programming-project">Managing a literate programming project</h4>
|
||||
<p>A few tricks to do literate programming.</p>
|
||||
<p>I prefer to put the org files to a separate directory (e.g. <code>org</code>). So I’ve come up with the following solution to avoid manually prefixing the <code>:tangle</code> arguments.</p>
|
||||
<p>A few tricks to do literate programming. I actually have only one (<a href="https://github.com/SqrtMinusOne/sqrt-data">sqrt-data</a>), and I’m not convinced in the benefits of the approach…</p>
|
||||
<p>Anyway, Org files are better off in a separated directory (e.g. <code>org</code>). So I’ve come up with the following solution to avoid manually prefixing the <code>:tangle</code> arguments.</p>
|
||||
<p>Set up the following argument with the path to the project root:</p>
|
||||
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>#+PROPERTY: PRJ-DIR ..
|
||||
</span></span></code></pre></div><p>A function to do the prefixing:</p>
|
||||
|
|
@ -3510,16 +3527,47 @@ Emacs is also particularly good at writing Lisp code, e.g. Clojure, Common Lisp,
|
|||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"C-c t a"</span> <span style="color:#00f">#'</span><span style="color:#19177c">org-transclusion-add</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"C-c t A"</span> <span style="color:#00f">#'</span><span style="color:#19177c">org-transclusion-add-all</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"C-c t t"</span> <span style="color:#00f">#'</span><span style="color:#19177c">org-transclusion-mode</span>))
|
||||
</span></span></code></pre></div><h4 id="managing-tables">Managing tables</h4>
|
||||
<p>I use Org to manage some small tables which I want to process further. So here is a function that saves each table to a CSV 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/export-org-tables-to-csv</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-table-map-tables</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">lambda</span> ()
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">when-let</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">name</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">plist-get</span> (<span style="color:#19177c">cadr</span> (<span style="color:#19177c">org-element-at-point</span>)) <span style="color:#008000">:name</span>))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">org-table-export</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">concat</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">file-name-directory</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">buffer-file-name</span>))
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#19177c">name</span> <span style="color:#ba2121">".csv"</span>)
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"orgtbl-to-csv"</span>)))))
|
||||
</span></span></code></pre></div><h3 id="productivity-and-knowledge-management">Productivity & Knowledge management</h3>
|
||||
<p>My ongoing effort to get a productivity setup in Org.</p>
|
||||
<p>Some inspiration:</p>
|
||||
<p>My ongoing effort to <del>get a productivity setup</del> manage something in my life in Org.</p>
|
||||
<p>Initial inspirations (<span class="timestamp-wrapper"><span class="timestamp"><2021-06-30 Wed></span></span>):</p>
|
||||
<ul>
|
||||
<li><a href="https://www.labri.fr/perso/nrougier/GTD/index.html">Nicolas P. Rougier. Get Things Done with Emacs</a></li>
|
||||
<li><a href="https://blog.jethro.dev/posts/org_mode_workflow_preview/">Jetro Kuan. Org-mode Workflow</a></li>
|
||||
<li><a href="https://www.alexeyshmalko.com/how-i-note/">Alexey Shmalko: How I note</a></li>
|
||||
<li><a href="https://rgoswami.me/posts/org-note-workflow/">Rohit Goswami: An Orgmode Note Workflow</a></li>
|
||||
</ul>
|
||||
<p>Used files:</p>
|
||||
<p>Some later reflections (<span class="timestamp-wrapper"><span class="timestamp"><2023-01-04 Wed></span></span>): so, it’s been one year and a half… I’ve tried some things since writing the initial inspiration list.</p>
|
||||
<p><a href="#org-journal">Org Journal</a> and <a href="#org-roam">Org Roam</a> are probably the most relevant packages in my workflow now.</p>
|
||||
<p>For I’ve ended up doing more or less plain Org files & Org Agenda. I don’t feel I’d extract much benefit from a more “advanced” system, with effort estimation, atomic tasks, etc. Less is more, I guess. Besided, I’m not particularly excited about the part of my life that may require such management.</p>
|
||||
<p>Neither I felt I was doing anything meaningful with my attempts at regular <a href="#review-workflow">review workflow</a>. I’ll think what to do with the section a bit latet.</p>
|
||||
<h4 id="org-agenda-and-project-management">Org Agenda & Project Management</h4>
|
||||
<p>I tried some things for generic project management, including:</p>
|
||||
<ul>
|
||||
<li>Managing projects in Org Roam</li>
|
||||
<li>Syncing with Trello</li>
|
||||
<li>Effort estimation & more atomic tasks</li>
|
||||
<li>Writing down progress on projects with <code>org-journal-tags</code></li>
|
||||
<li>…</li>
|
||||
</ul>
|
||||
<p>But for now stopped on one <code>.org</code> file for one large project / a few smaller related projects and rather high-level tasks. Don’t feel the need to do more yet.</p>
|
||||
<h5 id="agenda-and-refile-files">Agenda & refile files</h5>
|
||||
<p>All my project files live in the <code>/projects</code> directory, so here’s a function to set up <code>org-agenda-files</code> and <code>org-refile-targets</code> accordingly.</p>
|
||||
<p>Also, my project structure is somewhat chaotic, so I have an <code>.el</code> file in the org directory that defines some of the refile targets.</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/update-org-agenda</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">project-files</span>
|
||||
|
|
@ -3536,27 +3584,21 @@ Emacs is also particularly good 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">project-files</span>))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq</span> <span style="color:#19177c">org-refile-targets</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#666">`</span>(<span style="color:#666">,@</span>(<span style="color:#00f">mapcar</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">lambda</span> (<span style="color:#19177c">f</span>) <span style="color:#666">`</span>(<span style="color:#666">,</span><span style="color:#19177c">f</span> <span style="color:#666">.</span> (<span style="color:#008000">:maxlevel</span> <span style="color:#666">.</span> <span style="color:#666">2</span>)))
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#19177c">project-files</span>)
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#666">,@</span>(<span style="color:#00f">mapcar</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">lambda</span> (<span style="color:#19177c">f</span>) <span style="color:#666">`</span>(<span style="color:#666">,</span><span style="color:#19177c">f</span> <span style="color:#666">.</span> (<span style="color:#008000">:tag</span> <span style="color:#666">.</span> <span style="color:#ba2121">"refile"</span>)))
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#19177c">project-files</span>)))))
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#19177c">project-files</span>)))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">when</span> (<span style="color:#00f">file-exists-p</span> (<span style="color:#00f">concat</span> <span style="color:#19177c">org-directory</span> <span style="color:#ba2121">"/scripts/refile.el"</span>))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">load-file</span> (<span style="color:#00f">concat</span> <span style="color:#19177c">org-directory</span> <span style="color:#ba2121">"/scripts/refile.el"</span>))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">run-hooks</span> <span style="color:#19177c">'my/org-refile-hooks</span>))))
|
||||
</span></span><span style="display:flex;"><span>
|
||||
</span></span><span style="display:flex;"><span>(<span style="color:#19177c">with-eval-after-load-norem</span> <span style="color:#19177c">'org</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq</span> <span style="color:#19177c">org-roam-directory</span> (<span style="color:#00f">concat</span> <span style="color:#19177c">org-directory</span> <span style="color:#ba2121">"/roam"</span>))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">my/update-org-agenda</span>)
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#408080;font-style:italic">;; (setq org-default-notes-file (concat org-directory "/notes.org"))</span>
|
||||
</span></span><span style="display:flex;"><span> )
|
||||
</span></span></code></pre></div><p>Hotkeys</p>
|
||||
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-emacs-lisp" data-lang="emacs-lisp"><span style="display:flex;"><span>(<span style="color:#19177c">my-leader-def</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:infix</span> <span style="color:#ba2121">"o"</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-mode"</span>)
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"c"</span> <span style="color:#19177c">'org-capture</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"a"</span> <span style="color:#19177c">'org-agenda</span>)
|
||||
</span></span></code></pre></div><p>Refile targets</p>
|
||||
</span></span></code></pre></div><p>Refile 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">setq</span> <span style="color:#19177c">org-refile-use-outline-path</span> <span style="color:#19177c">'file</span>)
|
||||
</span></span><span style="display:flex;"><span>(<span style="color:#008000">setq</span> <span style="color:#19177c">org-outline-path-complete-in-steps</span> <span style="color:#800">nil</span>)
|
||||
</span></span></code></pre></div><h4 id="capture-templates-and-various-settings">Capture templates & various settings</h4>
|
||||
</span></span></code></pre></div><h5 id="capture-templates-and-various-settings">Capture templates & various settings</h5>
|
||||
<p>Settings for Org capture mode. The goal here is to have a non-disruptive process to capture various 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">defun</span> <span style="color:#19177c">my/generate-inbox-note-name</span> ()
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">format</span>
|
||||
|
|
@ -3580,73 +3622,32 @@ Emacs is also particularly good at writing Lisp code, e.g. Clojure, Common Lisp,
|
|||
</span></span><span style="display:flex;"><span> (<span style="color:#ba2121">"n"</span> <span style="color:#ba2121">"note"</span> <span style="color:#19177c">entry</span> (<span style="color:#19177c">file</span> <span style="color:#19177c">my/generate-inbox-note-name</span>)
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#666">,</span>(<span style="color:#00f">concat</span> <span style="color:#ba2121">"* %?\n"</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"/Entered on/ %U"</span>))))
|
||||
</span></span></code></pre></div><p>Effort estimation</p>
|
||||
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-emacs-lisp" data-lang="emacs-lisp"><span style="display:flex;"><span>(<span style="color:#19177c">with-eval-after-load-norem</span> <span style="color:#19177c">'org</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">add-to-list</span> <span style="color:#19177c">'org-global-properties</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#666">'</span>(<span style="color:#ba2121">"Effort_ALL"</span> <span style="color:#666">.</span> <span style="color:#ba2121">"0 0:05 0:10 0:15 0:30 0:45 1:00 2:00 4:00"</span>)))
|
||||
</span></span></code></pre></div><p>Log DONE time</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-log-done</span> <span style="color:#19177c">'time</span>)
|
||||
</span></span></code></pre></div><h4 id="off--trello-sync"><span class="org-todo done OFF">OFF</span> (OFF) Trello sync</h4>
|
||||
<p>UPD <span class="timestamp-wrapper"><span class="timestamp"><2022-03-27 Sun></span></span>: disabling this for now.</p>
|
||||
<p>Some of the projects I’m participating in are managed via Trello, so I use <a href="http://org-trello.github.io/">org-trello</a> to keep track of them. The package has a remarkably awkward keybindings setup, so my effort to call <code>my-leader-def</code> to set keybindings I like is no less awkward.</p>
|
||||
<p>Also, trello files are huge and have a lot of information and tasks which do not concern me, so I don’t add them to <code>org-agenda-files</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">unless</span> (<span style="color:#00f">file-exists-p</span> (<span style="color:#00f">concat</span> <span style="color:#19177c">org-directory</span> <span style="color:#ba2121">"/trello"</span>))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">mkdir</span> (<span style="color:#00f">concat</span> <span style="color:#19177c">org-directory</span> <span style="color:#ba2121">"/trello"</span>) <span style="color:#800">t</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">org-trello-files</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">thread-last</span> (<span style="color:#00f">concat</span> <span style="color:#19177c">org-directory</span> <span style="color:#ba2121">"/trello"</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">directory-files</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">f</span>) (<span style="color:#19177c">string-match-p</span> (<span style="color:#008000">rx</span> <span style="color:#ba2121">".org"</span> <span style="color:#19177c">eos</span>) <span style="color:#19177c">f</span>)))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">mapcar</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">lambda</span> (<span style="color:#19177c">f</span>) (<span style="color:#00f">concat</span> <span style="color:#19177c">org-directory</span> <span style="color:#ba2121">"/trello/"</span> <span style="color:#19177c">f</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">use-package</span> <span style="color:#19177c">org-trello</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:straight</span> (<span style="color:#008000">:build</span> (<span style="color:#008000">:not</span> <span style="color:#19177c">native-compile</span>))
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:commands</span> (<span style="color:#19177c">org-trello-mode</span>)
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:disabled</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:if</span> (<span style="color:#19177c">not</span> <span style="color:#19177c">my/remote-server</span>)
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:init</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq</span> <span style="color:#19177c">org-trello-current-prefix-keybinding</span> <span style="color:#ba2121">"C-c o"</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq</span> <span style="color:#19177c">org-trello-add-tags</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">'org-mode-hook</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">when</span> (<span style="color:#19177c">string-match-p</span> (<span style="color:#008000">rx</span> <span style="color:#ba2121">"trello"</span>) (<span style="color:#008000">or</span> (<span style="color:#00f">buffer-file-name</span>) <span style="color:#ba2121">""</span>))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">org-trello-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:#00f">eval</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#666">`</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">"o t"</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:keymaps</span> <span style="color:#666">'</span>(<span style="color:#19177c">org-trello-mode-map</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">"trello"</span>)
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#666">,@</span>(<span style="color:#19177c">mapcan</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">lambda</span> (<span style="color:#19177c">b</span>) (<span style="color:#00f">list</span> (<span style="color:#00f">nth</span> <span style="color:#666">1</span> <span style="color:#19177c">b</span>) (<span style="color:#19177c">macroexp-quote</span> (<span style="color:#00f">nth</span> <span style="color:#666">0</span> <span style="color:#19177c">b</span>))))
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#19177c">org-trello-interactive-command-binding-couples</span>))))
|
||||
</span></span></code></pre></div><h4 id="org-ql">org-ql</h4>
|
||||
<p><a href="https://github.com/alphapapa/org-ql">org-ql</a> is a package to query the org files. I’m using it in my review workflow and for custom agenda views.</p>
|
||||
</span></span></code></pre></div><h5 id="org-ql">org-ql</h5>
|
||||
<p><a href="https://github.com/alphapapa/org-ql">org-ql</a> is a package to query the org files. I’ve tried using it for:</p>
|
||||
<ul>
|
||||
<li>Grabbing done tasks / meetings / etc for review workflow</li>
|
||||
<li>Adding Trello tasks into Agenga</li>
|
||||
</ul>
|
||||
<p>None of that worked out, but I’ll keep the package here in case I have some more 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">use-package</span> <span style="color:#19177c">org-ql</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:after</span> (<span style="color:#19177c">org</span>)
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:if</span> (<span style="color:#19177c">not</span> <span style="color:#19177c">my/remote-server</span>)
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:straight</span> (<span style="color:#008000">:fetcher</span> <span style="color:#19177c">github</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:repo</span> <span style="color:#ba2121">"alphapapa/org-ql"</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:files</span> (<span style="color:#008000">:defaults</span> (<span style="color:#008000">:exclude</span> <span style="color:#ba2121">"helm-org-ql.el"</span>))))
|
||||
</span></span></code></pre></div><h4 id="custom-agendas">Custom agendas</h4>
|
||||
</span></span></code></pre></div><h5 id="custom-agendas">Custom agendas</h5>
|
||||
<p>Some custom agendas to fit my workflow.</p>
|
||||
<p><del>Despite the fact that I don’t add <code>org-trello-files</code> to <code>org-agenda-files</code> I still want to see them in agenda, so I use <code>org-ql-block</code> from <code>org-ql</code>.</del></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-scheduled-get-time</span> ()
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">let</span> ((<span style="color:#19177c">scheduled</span> (<span style="color:#19177c">org-get-scheduled-time</span> (<span style="color:#00f">point</span>))))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">if</span> <span style="color:#19177c">scheduled</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">format-time-string</span> <span style="color:#ba2121">"%Y-%m-%d"</span> <span style="color:#19177c">scheduled</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">setq</span> <span style="color:#19177c">org-agenda-hide-tags-regexp</span> (<span style="color:#008000">rx</span> (<span style="color:#008000">or</span> <span style="color:#ba2121">"org"</span> <span style="color:#ba2121">"log"</span> <span style="color:#ba2121">"log_here"</span> <span style="color:#ba2121">"refile"</span>)))
|
||||
</span></span><span style="display:flex;"><span>(<span style="color:#008000">setq</span> <span style="color:#19177c">org-agenda-hide-tags-regexp</span> (<span style="color:#008000">rx</span> (<span style="color:#008000">or</span> <span style="color:#ba2121">"org"</span> <span style="color:#ba2121">"refile"</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">org-agenda-custom-commands</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#666">`</span>((<span style="color:#ba2121">"p"</span> <span style="color:#ba2121">"My outline"</span>
|
||||
</span></span><span style="display:flex;"><span> ((<span style="color:#19177c">agenda</span> <span style="color:#ba2121">""</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">todo</span> <span style="color:#ba2121">"NEXT"</span>
|
||||
</span></span><span style="display:flex;"><span> ((<span style="color:#19177c">org-agenda-prefix-format</span> <span style="color:#ba2121">" %i %-12:c [%e] "</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">org-agenda-overriding-header</span> <span style="color:#ba2121">"Next tasks"</span>)))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">tags-todo</span> <span style="color:#ba2121">"inbox"</span>
|
||||
</span></span><span style="display:flex;"><span> ((<span style="color:#19177c">org-agenda-overriding-header</span> <span style="color:#ba2121">"Inbox"</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">org-agenda-prefix-format</span> <span style="color:#ba2121">" %i %-12:c"</span>)
|
||||
|
|
@ -3655,49 +3656,118 @@ Emacs is also particularly good at writing Lisp code, e.g. Clojure, Common Lisp,
|
|||
</span></span><span style="display:flex;"><span> ((<span style="color:#19177c">org-agenda-overriding-header</span> <span style="color:#ba2121">"Waitlist"</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">org-agenda-hide-tags-regexp</span> <span style="color:#ba2121">"waitlist"</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">org-agenda-prefix-format</span> <span style="color:#ba2121">" %i %-12:c %-12(my/org-scheduled-get-time)"</span>)))))))
|
||||
</span></span></code></pre></div><h4 id="bibliography">Bibliography</h4>
|
||||
<p>I’m currently trying to 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>
|
||||
<h5 id="org-ref">org-ref</h5>
|
||||
<p><a href="https://github.com/jkitchin/org-ref">org-ref</a> is an excellent package by John Kitchin that provides support for managing citations and references in Org Mode.</p>
|
||||
<p>It may have become less relevant since <code>org-cite</code> was merged into plain Org, but <code>org-ref</code> is still just as usable.</p>
|
||||
<p>As of now, this package loads Helm on start. To avoid this, I have to exclude Helm from the <code>Package-requires</code> in the <a href=".emacs.d/straight/repos/org-ref/org-ref.el">org-ref.el</a> file. I haven’t found a way to do this without modifying the package source yet.</p>
|
||||
<p>There’s a package called <a href="https://github.com/org-roam/org-roam-bibtex">org-roam-bibtex</a> that allows to keep literature notes in <a href="https://github.com/org-roam/org-roam">org-roam</a> and access them from <code>org-ref</code>, but as for now I store literature notes separately, as advised by Ahrens Sönke in his excellent book “How to take smart 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">use-package</span> <span style="color:#19177c">org-ref</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:straight</span> (<span style="color:#008000">:files</span> (<span style="color:#008000">:defaults</span> (<span style="color:#008000">:exclude</span> <span style="color:#ba2121">"*helm*"</span>)))
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:if</span> (<span style="color:#19177c">not</span> <span style="color:#19177c">my/remote-server</span>)
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:init</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq</span> <span style="color:#19177c">bibtex-dialect</span> <span style="color:#19177c">'biblatex</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq</span> <span style="color:#19177c">bibtex-completion-bibliography</span> <span style="color:#666">'</span>(<span style="color:#ba2121">"~/Documents/org-mode/library.bib"</span>))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq</span> <span style="color:#19177c">bibtex-completion-library-path</span> <span style="color:#666">'</span>(<span style="color:#ba2121">"~/Documents/library"</span>))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq</span> <span style="color:#19177c">bibtex-completion-notes-path</span> <span style="color:#ba2121">"~/Documents/org-mode/literature-notes"</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq</span> <span style="color:#19177c">bibtex-completion-display-formats</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#666">'</span>((<span style="color:#800">t</span> <span style="color:#666">.</span> <span style="color:#ba2121">"${author:36} ${title:*} ${note:10} ${year:4} ${=has-pdf=:1}${=type=:7}"</span>)))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq</span> <span style="color:#19177c">bibtex-completion-pdf-open-function</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">lambda</span> (<span style="color:#19177c">file</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><span style="display:flex;"><span> <span style="color:#008000">:after</span> (<span style="color:#19177c">org</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">require</span> <span style="color:#19177c">'org-ref-ivy</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-mode-map</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"C-c l"</span> <span style="color:#00f">#'</span><span style="color:#19177c">org-ref-insert-link-hydra/body</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">'bibtex-mode-map</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"M-RET"</span> <span style="color:#19177c">'org-ref-bibtex-hydra/body</span>))
|
||||
</span></span></code></pre></div><h5 id="ivy-bibtex">ivy-bibtex</h5>
|
||||
<p><a href="https://github.com/tmalsburg/helm-bibtex">ivy-bibtex</a> is an Ivy interface to bibtex. It uses the same configuration variables as <code>org-ref</code>, or rather, both packages use variables from the built-in <code>bibtex.el</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">ivy-bibtex</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:commands</span> (<span style="color:#19177c">ivy-bibtex</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">:init</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">my-leader-def</span> <span style="color:#ba2121">"fB"</span> <span style="color:#19177c">'ivy-bibtex</span>))
|
||||
</span></span></code></pre></div><h5 id="other-settings">Other settings</h5>
|
||||
<p>Hotkeys</p>
|
||||
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-emacs-lisp" data-lang="emacs-lisp"><span style="display:flex;"><span>(<span style="color:#19177c">my-leader-def</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:infix</span> <span style="color:#ba2121">"o"</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-mode"</span>)
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"c"</span> <span style="color:#19177c">'org-capture</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"a"</span> <span style="color:#19177c">'org-agenda</span>)
|
||||
</span></span></code></pre></div><p>Effort estimation</p>
|
||||
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-emacs-lisp" data-lang="emacs-lisp"><span style="display:flex;"><span>(<span style="color:#19177c">with-eval-after-load-norem</span> <span style="color:#19177c">'org</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">add-to-list</span> <span style="color:#19177c">'org-global-properties</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#666">'</span>(<span style="color:#ba2121">"Effort_ALL"</span> <span style="color:#666">.</span> <span style="color:#ba2121">"0 0:05 0:10 0:15 0:30 0:45 1:00 2:00 4:00"</span>)))
|
||||
</span></span></code></pre></div><p>Log DONE time</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-log-done</span> <span style="color:#19177c">'time</span>)
|
||||
</span></span></code></pre></div><h5 id="copying-records">Copying records</h5>
|
||||
<p>I like to add numbers to repeating events, like meetings. E.g.</p>
|
||||
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>* Job meeting 62
|
||||
</span></span><span style="display:flex;"><span>SCHEDULED: <2022-11-13 16:00>
|
||||
</span></span><span style="display:flex;"><span>* Job meeting 63
|
||||
</span></span><span style="display:flex;"><span>SCHEDULED: <2022-11-13 16:00>
|
||||
</span></span><span style="display:flex;"><span>...
|
||||
</span></span></code></pre></div><p>Naturally, I want a way to copy such records. Org Mode already has a function called <code>org-clone-subtree-with-time-shift</code>, that does everything I want except for updating the numbers.</p>
|
||||
<p>Unfortunately, I see no way to advise the original function, so here’s my version that makes use of <code>evil-numbers</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/org-clone-subtree-with-time-shift</span> (<span style="color:#19177c">n</span> <span style="color:#008000">&optional</span> <span style="color:#19177c">shift</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">interactive</span> <span style="color:#ba2121">"nNumber of clones to produce: "</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">unless</span> (<span style="color:#19177c">wholenump</span> <span style="color:#19177c">n</span>) (<span style="color:#d2413a;font-weight:bold">user-error</span> <span style="color:#ba2121">"Invalid number of replications %s"</span> <span style="color:#19177c">n</span>))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">when</span> (<span style="color:#19177c">org-before-first-heading-p</span>) (<span style="color:#d2413a;font-weight:bold">user-error</span> <span style="color:#ba2121">"No subtree to clone"</span>))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">let*</span> ((<span style="color:#19177c">beg</span> (<span style="color:#008000">save-excursion</span> (<span style="color:#19177c">org-back-to-heading</span> <span style="color:#800">t</span>) (<span style="color:#00f">point</span>)))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">end-of-tree</span> (<span style="color:#008000">save-excursion</span> (<span style="color:#19177c">org-end-of-subtree</span> <span style="color:#800">t</span> <span style="color:#800">t</span>) (<span style="color:#00f">point</span>)))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">shift</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">or</span> <span style="color:#19177c">shift</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">if</span> (<span style="color:#008000">and</span> (<span style="color:#19177c">not</span> (<span style="color:#00f">equal</span> <span style="color:#19177c">current-prefix-arg</span> <span style="color:#666">'</span>(<span style="color:#666">4</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:#00f">goto-char</span> <span style="color:#19177c">beg</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">re-search-forward</span> <span style="color:#19177c">org-ts-regexp-both</span> <span style="color:#19177c">end-of-tree</span> <span style="color:#800">t</span>)))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">read-from-minibuffer</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"Date shift per clone (e.g. +1w, empty to copy unchanged): "</span>)
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">""</span>))) <span style="color:#408080;font-style:italic">;No time shift</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">doshift</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">and</span> (<span style="color:#19177c">org-string-nw-p</span> <span style="color:#19177c">shift</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">or</span> (<span style="color:#00f">string-match</span> <span style="color:#ba2121">"\\`[ \t]*\\([+-]?[0-9]+\\)\\([hdwmy]\\)[ \t]*\\'"</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#19177c">shift</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#d2413a;font-weight:bold">user-error</span> <span style="color:#ba2121">"Invalid shift specification %s"</span> <span style="color:#19177c">shift</span>)))))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">goto-char</span> <span style="color:#19177c">end-of-tree</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">unless</span> (<span style="color:#00f">bolp</span>) (<span style="color:#00f">insert</span> <span style="color:#ba2121">"\n"</span>))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">let*</span> ((<span style="color:#19177c">end</span> (<span style="color:#00f">point</span>))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">template</span> (<span style="color:#00f">buffer-substring</span> <span style="color:#19177c">beg</span> <span style="color:#19177c">end</span>))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">shift-n</span> (<span style="color:#008000">and</span> <span style="color:#19177c">doshift</span> (<span style="color:#00f">string-to-number</span> (<span style="color:#19177c">match-string</span> <span style="color:#666">1</span> <span style="color:#19177c">shift</span>))))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">shift-what</span> (<span style="color:#008000">pcase</span> (<span style="color:#008000">and</span> <span style="color:#19177c">doshift</span> (<span style="color:#19177c">match-string</span> <span style="color:#666">2</span> <span style="color:#19177c">shift</span>))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#666">`</span><span style="color:#800">nil</span> <span style="color:#800">nil</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#ba2121">"h"</span> <span style="color:#19177c">'hour</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#ba2121">"d"</span> <span style="color:#19177c">'day</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#ba2121">"w"</span> (<span style="color:#008000">setq</span> <span style="color:#19177c">shift-n</span> (<span style="color:#00f">*</span> <span style="color:#666">7</span> <span style="color:#19177c">shift-n</span>)) <span style="color:#19177c">'day</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#ba2121">"m"</span> <span style="color:#19177c">'month</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#ba2121">"y"</span> <span style="color:#19177c">'year</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">_</span> (<span style="color:#d2413a;font-weight:bold">error</span> <span style="color:#ba2121">"Unsupported time unit"</span>))))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">nmin</span> <span style="color:#666">1</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">nmax</span> <span style="color:#19177c">n</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">n-no-remove</span> <span style="color:#666">-1</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">org-id-overriding-file-name</span> (<span style="color:#00f">buffer-file-name</span> (<span style="color:#00f">buffer-base-buffer</span>)))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">idprop</span> (<span style="color:#19177c">org-entry-get</span> <span style="color:#19177c">beg</span> <span style="color:#ba2121">"ID"</span>)))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">when</span> (<span style="color:#008000">and</span> <span style="color:#19177c">doshift</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">string-match-p</span> <span style="color:#ba2121">"<[^<>\n]+ [.+]?\\+[0-9]+[hdwmy][^<>\n]*>"</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#19177c">template</span>))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">delete-region</span> <span style="color:#19177c">beg</span> <span style="color:#19177c">end</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq</span> <span style="color:#19177c">end</span> <span style="color:#19177c">beg</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq</span> <span style="color:#19177c">nmin</span> <span style="color:#666">0</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq</span> <span style="color:#19177c">nmax</span> (<span style="color:#00f">1+</span> <span style="color:#19177c">nmax</span>))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq</span> <span style="color:#19177c">n-no-remove</span> <span style="color:#19177c">nmax</span>))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">goto-char</span> <span style="color:#19177c">end</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">n</span> <span style="color:#19177c">from</span> <span style="color:#19177c">nmin</span> <span style="color:#19177c">to</span> <span style="color:#19177c">nmax</span> <span style="color:#008000">do</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">insert</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#408080;font-style:italic">;; Prepare clone.</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">with-temp-buffer</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">insert</span> <span style="color:#19177c">template</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">org-mode</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:#19177c">org-show-subtree</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">and</span> <span style="color:#19177c">idprop</span> (<span style="color:#008000">if</span> <span style="color:#19177c">org-clone-delete-id</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">org-entry-delete</span> <span style="color:#800">nil</span> <span style="color:#ba2121">"ID"</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">org-id-get-create</span> <span style="color:#800">t</span>)))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">unless</span> (<span style="color:#00f">=</span> <span style="color:#19177c">n</span> <span style="color:#666">0</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">while</span> (<span style="color:#00f">re-search-forward</span> <span style="color:#19177c">org-clock-line-re</span> <span style="color:#800">nil</span> <span style="color:#800">t</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">delete-region</span> (<span style="color:#00f">line-beginning-position</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">line-beginning-position</span> <span style="color:#666">2</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:#008000">while</span> (<span style="color:#00f">re-search-forward</span> <span style="color:#19177c">org-drawer-regexp</span> <span style="color:#800">nil</span> <span style="color:#800">t</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">org-remove-empty-drawer-at</span> (<span style="color:#00f">point</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:#19177c">add-hook</span> <span style="color:#19177c">'bibtex-mode</span> <span style="color:#19177c">'smartparens-mode</span>)
|
||||
</span></span></code></pre></div><h4 id="org-journal">Org Journal</h4>
|
||||
<p><a href="https://github.com/bastibe/org-journal">org-journal</a> is a plugin for maintaining a journal in org mode. I want(ed) to have its entries separate from my knowledge base.</p>
|
||||
<p>I’ve tried switching to Org Roam Dailies, but in the end decided that org-journal fits my workflow better.</p>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">when</span> <span style="color:#19177c">doshift</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">while</span> (<span style="color:#00f">re-search-forward</span> <span style="color:#19177c">org-ts-regexp-both</span> <span style="color:#800">nil</span> <span style="color:#800">t</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">org-timestamp-change</span> (<span style="color:#00f">*</span> <span style="color:#19177c">n</span> <span style="color:#19177c">shift-n</span>) <span style="color:#19177c">shift-what</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:#00f">goto-char</span> (<span style="color:#00f">point-min</span>))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">evil-numbers/inc-at-pt</span> (<span style="color:#00f">*</span> <span style="color:#19177c">n</span> <span style="color:#19177c">shift-n</span>) (<span style="color:#00f">point-min</span>)))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">unless</span> (<span style="color:#00f">=</span> <span style="color:#19177c">n</span> <span style="color:#19177c">n-no-remove</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:#008000">while</span> (<span style="color:#00f">re-search-forward</span> <span style="color:#19177c">org-ts-regexp</span> <span style="color:#800">nil</span> <span style="color:#800">t</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:#00f">goto-char</span> (<span style="color:#00f">match-beginning</span> <span style="color:#666">0</span>))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">when</span> (<span style="color:#00f">looking-at</span> <span style="color:#ba2121">"<[^<>\n]+\\( +[.+]?\\+[0-9]+[hdwmy]\\)"</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">delete-region</span> (<span style="color:#00f">match-beginning</span> <span style="color:#666">1</span>) (<span style="color:#00f">match-end</span> <span style="color:#666">1</span>)))))))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">buffer-string</span>)))))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">goto-char</span> <span style="color:#19177c">beg</span>)))
|
||||
</span></span></code></pre></div><p>My addition to that is the form with <code>evil-numbers/inc-at-pt</code>.</p>
|
||||
<h4 id="org-journal-1">Org Journal</h4>
|
||||
<p><a href="https://github.com/bastibe/org-journal">org-journal</a> is a package for maintaining a journal in org mode.</p>
|
||||
<p>This part turned out to be great. I even consulted the journal a few times to check if something actually happened, which makes me uneasy now that I think about it…</p>
|
||||
<p>One issue I found is that it’s kinda hard to find anything in the journal, and I’m not eager to open the journal for a random date anyway. So I’ve made a package called <a href="https://github.com/SqrtMinusOne/org-journal-tags">org-journal-tags</a>.</p>
|
||||
<p>My initial desire was to be able to query the journal for my thoughts on a particular subject or theme, for progress on some project, or for records related to some person… Which is kinda useful, although not quite as much as I expected it to be. Relatively fast querying of the journal is also nice.</p>
|
||||
<p>The section I named “on this day” turned out to be particularly interesting, as it kinda allowed me to connect with past versions of myself.</p>
|
||||
<p>And it was interesting to find the reinforcement effect of checked dates on the calendar.</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-journal</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:#19177c">my/remote-server</span>)
|
||||
|
|
@ -3715,7 +3785,7 @@ Emacs is also particularly good at writing Lisp code, e.g. Clojure, Common Lisp,
|
|||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq</span> <span style="color:#19177c">org-journal-file-format</span> <span style="color:#ba2121">"%Y-%m-%d.org"</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq</span> <span style="color:#19177c">org-journal-date-format</span> <span style="color:#ba2121">"%A, %Y-%m-%d"</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq</span> <span style="color:#19177c">org-journal-enable-encryption</span> <span style="color:#800">t</span>))
|
||||
</span></span></code></pre></div><p><a href="https://github.com/SqrtMinusOne/org-journal-tags">org-journal-tags</a> is my package that implements a tagging system for org-journal.</p>
|
||||
</span></span></code></pre></div><p>So, <a href="https://github.com/SqrtMinusOne/org-journal-tags">org-journal-tags</a> is my package that implements a tagging system for org-journal.</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-journal-tags</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">"SqrtMinusOne/org-journal-tags"</span>)
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:after</span> (<span style="color:#19177c">org-journal</span>)
|
||||
|
|
@ -3786,12 +3856,60 @@ Emacs is also particularly good 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><h4 id="org-roam">Org Roam</h4>
|
||||
</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>
|
||||
<h5 id="org-ref">org-ref</h5>
|
||||
<p><a href="https://github.com/jkitchin/org-ref">org-ref</a> is an excellent package by John Kitchin that provides support for managing citations and references in Org Mode.</p>
|
||||
<p>It may have become less relevant since <code>org-cite</code> was merged into plain Org, but <code>org-ref</code> is still just as usable.</p>
|
||||
<p>As of now, this package loads Helm on start. To avoid this, I have to exclude Helm from the <code>Package-requires</code> in the <a href=".emacs.d/straight/repos/org-ref/org-ref.el">org-ref.el</a> file. I haven’t found a way to do this without modifying the package source yet.</p>
|
||||
<p>There’s a package called <a href="https://github.com/org-roam/org-roam-bibtex">org-roam-bibtex</a> that allows to keep literature notes in <a href="https://github.com/org-roam/org-roam">org-roam</a> and access them from <code>org-ref</code>, but as for now I store literature notes separately.</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-ref</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:straight</span> (<span style="color:#008000">:files</span> (<span style="color:#008000">:defaults</span> (<span style="color:#008000">:exclude</span> <span style="color:#ba2121">"*helm*"</span>)))
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:if</span> (<span style="color:#19177c">not</span> <span style="color:#19177c">my/remote-server</span>)
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:init</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq</span> <span style="color:#19177c">bibtex-dialect</span> <span style="color:#19177c">'biblatex</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq</span> <span style="color:#19177c">bibtex-completion-bibliography</span> <span style="color:#666">'</span>(<span style="color:#ba2121">"~/Documents/org-mode/library.bib"</span>))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq</span> <span style="color:#19177c">bibtex-completion-library-path</span> <span style="color:#666">'</span>(<span style="color:#ba2121">"~/Documents/library"</span>))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq</span> <span style="color:#19177c">bibtex-completion-notes-path</span> <span style="color:#ba2121">"~/Documents/org-mode/literature-notes"</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq</span> <span style="color:#19177c">bibtex-completion-display-formats</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#666">'</span>((<span style="color:#800">t</span> <span style="color:#666">.</span> <span style="color:#ba2121">"${author:36} ${title:*} ${note:10} ${year:4} ${=has-pdf=:1}${=type=:7}"</span>)))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq</span> <span style="color:#19177c">bibtex-completion-pdf-open-function</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">lambda</span> (<span style="color:#19177c">file</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><span style="display:flex;"><span> <span style="color:#008000">:after</span> (<span style="color:#19177c">org</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">require</span> <span style="color:#19177c">'org-ref-ivy</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-mode-map</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"C-c l"</span> <span style="color:#00f">#'</span><span style="color:#19177c">org-ref-insert-link-hydra/body</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">'bibtex-mode-map</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"M-RET"</span> <span style="color:#19177c">'org-ref-bibtex-hydra/body</span>))
|
||||
</span></span></code></pre></div><h5 id="ivy-bibtex">ivy-bibtex</h5>
|
||||
<p><a href="https://github.com/tmalsburg/helm-bibtex">ivy-bibtex</a> is an Ivy interface to bibtex. It uses the same configuration variables as <code>org-ref</code>, or rather, both packages use variables from the built-in <code>bibtex.el</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">ivy-bibtex</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:commands</span> (<span style="color:#19177c">ivy-bibtex</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">:init</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">my-leader-def</span> <span style="color:#ba2121">"fB"</span> <span style="color:#19177c">'ivy-bibtex</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">'bibtex-mode</span> <span style="color:#19177c">'smartparens-mode</span>)
|
||||
</span></span></code></pre></div><h4 id="org-roam-1">Org Roam</h4>
|
||||
<p><a href="https://github.com/org-roam/org-roam">org-roam</a> is a plain-text knowledge database.</p>
|
||||
<p>Things I tried with Org Roam:</p>
|
||||
<ul>
|
||||
<li>Managing projects. Ended up preferring plain Org.</li>
|
||||
<li>Writing journal. <code>org-journal</code> and <code>org-journal-tags</code> seem to be a better fit for my workflow.</li>
|
||||
<li>Writing a journal with <code>org-roam-dailies</code>.
|
||||
Didn’t work out as I expected, so I’ve made <code>org-journal-tags</code> after I understood better what I want.</li>
|
||||
</ul>
|
||||
<p>Regardless, it turned out to be great for managing Zettelkasten, which is the original purpose of the package anyway. I didn’t expect to ever get into something like this, but I guess I was wrong.</p>
|
||||
<p>Some resources that helped me along the way (and still help):</p>
|
||||
<ul>
|
||||
<li>Sönke Ahrens’ book “How to take smart notes”</li>
|
||||
<li><a href="https://zettelkasten.de/">https://zettelkasten.de/</a> - a lot of useful stuff here, especially in the “Getting Started” section.</li>
|
||||
<li><a href="https://www.youtube.com/watch?v=-TpWahIzueg">System Crafters Live! - Can You Apply Zettelkasten in Emacs?</a></li>
|
||||
</ul>
|
||||
<h5 id="basic-package-configuration">Basic package configuration</h5>
|
||||
<table>
|
||||
|
|
@ -3848,9 +3966,7 @@ Emacs is also particularly good at writing Lisp code, e.g. Clojure, Common Lisp,
|
|||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:unnarrowed</span> <span style="color:#800">t</span>)))
|
||||
</span></span></code></pre></div><h5 id="keybindings-3">Keybindings</h5>
|
||||
<p>A set of keybindings to quickly access things in Org Roam.</p>
|
||||
<p>I used to have multiple categories of nodes in Org Roam (projects, dailies, etc), but as of now, only Zettelkasten remains.</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></span><span style="display:flex;"><span>(<span style="color:#008000">with-eval-after-load</span> <span style="color:#19177c">'org-roam</span>
|
||||
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-emacs-lisp" data-lang="emacs-lisp"><span style="display:flex;"><span>(<span style="color:#008000">with-eval-after-load</span> <span style="color:#19177c">'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>)
|
||||
|
|
@ -3880,7 +3996,8 @@ Emacs is also particularly good at writing Lisp code, e.g. Clojure, Common Lisp,
|
|||
</span></span><span style="display:flex;"><span> <span style="color:#008000">: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></code></pre></div><h5 id="org-roam-ui">Org Roam UI</h5>
|
||||
<p>A browser frontend to visualize a Roam directory in a form of a graph.</p>
|
||||
<p>A browser frontend to visualize the Roam database as a graph.</p>
|
||||
<p>Actually, I don’t find this quite as useful as structure nodes, because over time my graph grew somewhat convoluted. But it looks impressive.</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-ui</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">"org-roam/org-roam-ui"</span> <span style="color:#008000">:branch</span> <span style="color:#ba2121">"main"</span> <span style="color:#008000">:files</span> (<span style="color:#ba2121">"*.el"</span> <span style="color:#ba2121">"out"</span>))
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#008000">:if</span> (<span style="color:#19177c">not</span> <span style="color:#19177c">my/remote-server</span>)
|
||||
|
|
@ -3900,7 +4017,7 @@ Emacs is also particularly good at writing Lisp code, e.g. Clojure, Common Lisp,
|
|||
</span></span></code></pre></div><p>Don’t forget to run the following after setup:</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>xdg-mime default org-protocol.desktop x-scheme-handler/org-protocol
|
||||
</span></span></code></pre></div><h5 id="deft">Deft</h5>
|
||||
<p><a href="https://github.com/jrblevin/deft">Deft</a> is an Emacs package to quickly find notes. It seems quite useful to look for <code>org-roam</code> notes based on their contents.</p>
|
||||
<p><a href="https://github.com/jrblevin/deft">Deft</a> is an Emacs package to quickly find notes. I use it as a full-text search engine for <code>org-roam</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">deft</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:#19177c">my/remote-server</span>)
|
||||
|
|
@ -3951,7 +4068,7 @@ Emacs is also particularly good 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:#008000">with-eval-after-load</span> <span style="color:#19177c">'deft</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">advice-add</span> <span style="color:#00f">#'</span><span style="color:#19177c">deft-parse-title</span> <span style="color:#008000">:around</span> <span style="color:#00f">#'</span><span style="color:#19177c">my/deft-parse-title-around</span>))
|
||||
</span></span></code></pre></div><h4 id="review-workflow">Review workflow</h4>
|
||||
</span></span></code></pre></div><h4 id="review-workflow-1">Review workflow</h4>
|
||||
<p>UPD <span class="timestamp-wrapper"><span class="timestamp"><2022-03-27 Sun></span></span>. Out of action for now</p>
|
||||
<p>My take on a review workflow. As a baseline, I want to have a template that lists the important changes since the last review and other basic information. I’m doing reviews regularly, but the time intervals still may vary, hence this flexibility.</p>
|
||||
<p>This section has seen some updates over time.</p>
|
||||
|
|
@ -4182,114 +4299,7 @@ Emacs is also particularly good at writing Lisp code, e.g. Clojure, Common Lisp,
|
|||
</span></span><span style="display:flex;"><span>:EMAIL+: pvkorytov@etu.ru
|
||||
</span></span><span style="display:flex;"><span>:BIRTHDAY: [1998-08-14]
|
||||
</span></span><span style="display:flex;"><span>:END:
|
||||
</span></span></code></pre></div><h4 id="managing-tables">Managing tables</h4>
|
||||
<p>I use Org to manage some small tables which I want to process further. So here is a function that saves each table to a CSV 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/export-org-tables-to-csv</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-table-map-tables</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">lambda</span> ()
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">when-let</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">name</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">plist-get</span> (<span style="color:#19177c">cadr</span> (<span style="color:#19177c">org-element-at-point</span>)) <span style="color:#008000">:name</span>))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">org-table-export</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">concat</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">file-name-directory</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">buffer-file-name</span>))
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#19177c">name</span> <span style="color:#ba2121">".csv"</span>)
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"orgtbl-to-csv"</span>)))))
|
||||
</span></span></code></pre></div><h4 id="copying-records">Copying records</h4>
|
||||
<p>I like to add numbers to repeating events, like meetings. E.g.</p>
|
||||
<div class="highlight"><pre tabindex="0" style=";-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>* Job meeting 62
|
||||
</span></span><span style="display:flex;"><span>SCHEDULED: <2022-11-13 16:00>
|
||||
</span></span><span style="display:flex;"><span>* Job meeting 63
|
||||
</span></span><span style="display:flex;"><span>SCHEDULED: <2022-11-13 16:00>
|
||||
</span></span><span style="display:flex;"><span>...
|
||||
</span></span></code></pre></div><p>Naturally, I want a way to copy such records. Org Mode already has a function called <code>org-clone-subtree-with-time-shift</code>, that does everything I want except for updating the numbers.</p>
|
||||
<p>Unfortunately, I see no way to advise the original function, so here’s my version that makes use of <code>evil-numbers</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/org-clone-subtree-with-time-shift</span> (<span style="color:#19177c">n</span> <span style="color:#008000">&optional</span> <span style="color:#19177c">shift</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">interactive</span> <span style="color:#ba2121">"nNumber of clones to produce: "</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">unless</span> (<span style="color:#19177c">wholenump</span> <span style="color:#19177c">n</span>) (<span style="color:#d2413a;font-weight:bold">user-error</span> <span style="color:#ba2121">"Invalid number of replications %s"</span> <span style="color:#19177c">n</span>))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">when</span> (<span style="color:#19177c">org-before-first-heading-p</span>) (<span style="color:#d2413a;font-weight:bold">user-error</span> <span style="color:#ba2121">"No subtree to clone"</span>))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">let*</span> ((<span style="color:#19177c">beg</span> (<span style="color:#008000">save-excursion</span> (<span style="color:#19177c">org-back-to-heading</span> <span style="color:#800">t</span>) (<span style="color:#00f">point</span>)))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">end-of-tree</span> (<span style="color:#008000">save-excursion</span> (<span style="color:#19177c">org-end-of-subtree</span> <span style="color:#800">t</span> <span style="color:#800">t</span>) (<span style="color:#00f">point</span>)))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">shift</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">or</span> <span style="color:#19177c">shift</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">if</span> (<span style="color:#008000">and</span> (<span style="color:#19177c">not</span> (<span style="color:#00f">equal</span> <span style="color:#19177c">current-prefix-arg</span> <span style="color:#666">'</span>(<span style="color:#666">4</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:#00f">goto-char</span> <span style="color:#19177c">beg</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">re-search-forward</span> <span style="color:#19177c">org-ts-regexp-both</span> <span style="color:#19177c">end-of-tree</span> <span style="color:#800">t</span>)))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">read-from-minibuffer</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"Date shift per clone (e.g. +1w, empty to copy unchanged): "</span>)
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">""</span>))) <span style="color:#408080;font-style:italic">;No time shift</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">doshift</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">and</span> (<span style="color:#19177c">org-string-nw-p</span> <span style="color:#19177c">shift</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">or</span> (<span style="color:#00f">string-match</span> <span style="color:#ba2121">"\\`[ \t]*\\([+-]?[0-9]+\\)\\([hdwmy]\\)[ \t]*\\'"</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#19177c">shift</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#d2413a;font-weight:bold">user-error</span> <span style="color:#ba2121">"Invalid shift specification %s"</span> <span style="color:#19177c">shift</span>)))))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">goto-char</span> <span style="color:#19177c">end-of-tree</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">unless</span> (<span style="color:#00f">bolp</span>) (<span style="color:#00f">insert</span> <span style="color:#ba2121">"\n"</span>))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">let*</span> ((<span style="color:#19177c">end</span> (<span style="color:#00f">point</span>))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">template</span> (<span style="color:#00f">buffer-substring</span> <span style="color:#19177c">beg</span> <span style="color:#19177c">end</span>))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">shift-n</span> (<span style="color:#008000">and</span> <span style="color:#19177c">doshift</span> (<span style="color:#00f">string-to-number</span> (<span style="color:#19177c">match-string</span> <span style="color:#666">1</span> <span style="color:#19177c">shift</span>))))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">shift-what</span> (<span style="color:#008000">pcase</span> (<span style="color:#008000">and</span> <span style="color:#19177c">doshift</span> (<span style="color:#19177c">match-string</span> <span style="color:#666">2</span> <span style="color:#19177c">shift</span>))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#666">`</span><span style="color:#800">nil</span> <span style="color:#800">nil</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#ba2121">"h"</span> <span style="color:#19177c">'hour</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#ba2121">"d"</span> <span style="color:#19177c">'day</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#ba2121">"w"</span> (<span style="color:#008000">setq</span> <span style="color:#19177c">shift-n</span> (<span style="color:#00f">*</span> <span style="color:#666">7</span> <span style="color:#19177c">shift-n</span>)) <span style="color:#19177c">'day</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#ba2121">"m"</span> <span style="color:#19177c">'month</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#ba2121">"y"</span> <span style="color:#19177c">'year</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">_</span> (<span style="color:#d2413a;font-weight:bold">error</span> <span style="color:#ba2121">"Unsupported time unit"</span>))))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">nmin</span> <span style="color:#666">1</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">nmax</span> <span style="color:#19177c">n</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">n-no-remove</span> <span style="color:#666">-1</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">org-id-overriding-file-name</span> (<span style="color:#00f">buffer-file-name</span> (<span style="color:#00f">buffer-base-buffer</span>)))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">idprop</span> (<span style="color:#19177c">org-entry-get</span> <span style="color:#19177c">beg</span> <span style="color:#ba2121">"ID"</span>)))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">when</span> (<span style="color:#008000">and</span> <span style="color:#19177c">doshift</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">string-match-p</span> <span style="color:#ba2121">"<[^<>\n]+ [.+]?\\+[0-9]+[hdwmy][^<>\n]*>"</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#19177c">template</span>))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">delete-region</span> <span style="color:#19177c">beg</span> <span style="color:#19177c">end</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq</span> <span style="color:#19177c">end</span> <span style="color:#19177c">beg</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq</span> <span style="color:#19177c">nmin</span> <span style="color:#666">0</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq</span> <span style="color:#19177c">nmax</span> (<span style="color:#00f">1+</span> <span style="color:#19177c">nmax</span>))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">setq</span> <span style="color:#19177c">n-no-remove</span> <span style="color:#19177c">nmax</span>))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">goto-char</span> <span style="color:#19177c">end</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">n</span> <span style="color:#19177c">from</span> <span style="color:#19177c">nmin</span> <span style="color:#19177c">to</span> <span style="color:#19177c">nmax</span> <span style="color:#008000">do</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">insert</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#408080;font-style:italic">;; Prepare clone.</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">with-temp-buffer</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">insert</span> <span style="color:#19177c">template</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">org-mode</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:#19177c">org-show-subtree</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">and</span> <span style="color:#19177c">idprop</span> (<span style="color:#008000">if</span> <span style="color:#19177c">org-clone-delete-id</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">org-entry-delete</span> <span style="color:#800">nil</span> <span style="color:#ba2121">"ID"</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">org-id-get-create</span> <span style="color:#800">t</span>)))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">unless</span> (<span style="color:#00f">=</span> <span style="color:#19177c">n</span> <span style="color:#666">0</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">while</span> (<span style="color:#00f">re-search-forward</span> <span style="color:#19177c">org-clock-line-re</span> <span style="color:#800">nil</span> <span style="color:#800">t</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">delete-region</span> (<span style="color:#00f">line-beginning-position</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">line-beginning-position</span> <span style="color:#666">2</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:#008000">while</span> (<span style="color:#00f">re-search-forward</span> <span style="color:#19177c">org-drawer-regexp</span> <span style="color:#800">nil</span> <span style="color:#800">t</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">org-remove-empty-drawer-at</span> (<span style="color:#00f">point</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">when</span> <span style="color:#19177c">doshift</span>
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">while</span> (<span style="color:#00f">re-search-forward</span> <span style="color:#19177c">org-ts-regexp-both</span> <span style="color:#800">nil</span> <span style="color:#800">t</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">org-timestamp-change</span> (<span style="color:#00f">*</span> <span style="color:#19177c">n</span> <span style="color:#19177c">shift-n</span>) <span style="color:#19177c">shift-what</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:#00f">goto-char</span> (<span style="color:#00f">point-min</span>))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#19177c">evil-numbers/inc-at-pt</span> (<span style="color:#00f">*</span> <span style="color:#19177c">n</span> <span style="color:#19177c">shift-n</span>) (<span style="color:#00f">point-min</span>)))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">unless</span> (<span style="color:#00f">=</span> <span style="color:#19177c">n</span> <span style="color:#19177c">n-no-remove</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:#008000">while</span> (<span style="color:#00f">re-search-forward</span> <span style="color:#19177c">org-ts-regexp</span> <span style="color:#800">nil</span> <span style="color:#800">t</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:#00f">goto-char</span> (<span style="color:#00f">match-beginning</span> <span style="color:#666">0</span>))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#008000">when</span> (<span style="color:#00f">looking-at</span> <span style="color:#ba2121">"<[^<>\n]+\\( +[.+]?\\+[0-9]+[hdwmy]\\)"</span>)
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">delete-region</span> (<span style="color:#00f">match-beginning</span> <span style="color:#666">1</span>) (<span style="color:#00f">match-end</span> <span style="color:#666">1</span>)))))))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">buffer-string</span>)))))
|
||||
</span></span><span style="display:flex;"><span> (<span style="color:#00f">goto-char</span> <span style="color:#19177c">beg</span>)))
|
||||
</span></span></code></pre></div><p>My addition to that is the form with <code>evil-numbers/inc-at-pt</code>.</p>
|
||||
<h3 id="ui">UI</h3>
|
||||
</span></span></code></pre></div><h3 id="ui">UI</h3>
|
||||
<h4 id="off--instant-equations-preview"><span class="org-todo done OFF">OFF</span> (OFF) Instant equations preview</h4>
|
||||
<p>Instant math previews for org mode.</p>
|
||||
<p>References:</p>
|
||||
|
|
@ -6444,13 +6454,6 @@ Emacs is also particularly good at writing Lisp code, e.g. Clojure, Common Lisp,
|
|||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"q"</span> <span style="color:#19177c">'google-translate-query-translate</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"Q"</span> <span style="color:#19177c">'google-translate-query-translate-reverse</span>
|
||||
</span></span><span style="display:flex;"><span> <span style="color:#ba2121">"t"</span> <span style="color:#19177c">'google-translate-smooth-translate</span>)
|
||||
</span></span></code></pre></div><h4 id="reverso">Reverso</h4>
|
||||
<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">reverso</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">"SqrtMinusOne/reverso.el"</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">"ar"</span> <span style="color:#00f">#'</span><span style="color:#19177c">reverso</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">reverso-languages</span> <span style="color:#666">'</span>(<span style="color:#19177c">russian</span> <span style="color:#19177c">english</span> <span style="color:#19177c">german</span>)))
|
||||
</span></span></code></pre></div><h3 id="reading-documentation">Reading documentation</h3>
|
||||
<h4 id="tldr">tldr</h4>
|
||||
<p><a href="https://tldr.sh/">tldr</a> is a collaborative project providing cheatsheets for various console commands. For some reason, the built-in download in the package is broken, so I use my own function.</p>
|
||||
|
|
@ -7070,7 +7073,7 @@ I’ve seen a couple of cases where people would swap their username and ema
|
|||
<ul>
|
||||
<li><a href="#introduction">Introduction</a></li>
|
||||
<li><a href="#some-remarks">Some remarks</a></li>
|
||||
<li><a href="#bootstrap">Bootstrap</a>
|
||||
<li><a href="#initial-setup">Initial setup</a>
|
||||
<ul>
|
||||
<li><a href="#packages">Packages</a>
|
||||
<ul>
|
||||
|
|
@ -7224,6 +7227,7 @@ I’ve seen a couple of cases where people would swap their username and ema
|
|||
<li><a href="#plantuml">PlantUML</a></li>
|
||||
<li><a href="#subtitles">Subtitles</a></li>
|
||||
<li><a href="#languagetool">LanguageTool</a></li>
|
||||
<li><a href="#reverso">Reverso</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#lisp">Lisp</a>
|
||||
|
|
@ -7273,6 +7277,13 @@ I’ve seen a couple of cases where people would swap their username and ema
|
|||
<li><a href="#fish">fish</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#query-languages">Query languages</a>
|
||||
<ul>
|
||||
<li><a href="#sql">SQL</a></li>
|
||||
<li><a href="#sparql">SPARQL</a></li>
|
||||
<li><a href="#graphql">GraphQL</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#x509">x509</a></li>
|
||||
<li><a href="#java">Java</a></li>
|
||||
<li><a href="#go">Go</a></li>
|
||||
|
|
@ -7285,8 +7296,6 @@ I’ve seen a couple of cases where people would swap their username and ema
|
|||
<li><a href="#haskell">Haskell</a></li>
|
||||
<li><a href="#nix">nix</a></li>
|
||||
<li><a href="#lua">Lua</a></li>
|
||||
<li><a href="#sql">SQL</a></li>
|
||||
<li><a href="#sparql">SPARQL</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#org-mode">Org Mode</a>
|
||||
|
|
@ -7320,21 +7329,17 @@ I’ve seen a couple of cases where people would swap their username and ema
|
|||
<li><a href="#toc">TOC</a></li>
|
||||
<li><a href="#screenshots">Screenshots</a></li>
|
||||
<li><a href="#transclusion">Transclusion</a></li>
|
||||
<li><a href="#managing-tables">Managing tables</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#productivity-and-knowledge-management">Productivity & Knowledge management</a>
|
||||
<ul>
|
||||
<li><a href="#capture-templates-and-various-settings">Capture templates & various settings</a></li>
|
||||
<li><a href="#off--trello-sync"><span class="org-todo done OFF">OFF</span> (OFF) Trello sync</a></li>
|
||||
<li><a href="#org-ql">org-ql</a></li>
|
||||
<li><a href="#custom-agendas">Custom agendas</a></li>
|
||||
<li><a href="#org-agenda-and-project-management">Org Agenda & Project Management</a></li>
|
||||
<li><a href="#org-journal-1">Org Journal</a></li>
|
||||
<li><a href="#bibliography">Bibliography</a></li>
|
||||
<li><a href="#org-journal">Org Journal</a></li>
|
||||
<li><a href="#org-roam">Org Roam</a></li>
|
||||
<li><a href="#review-workflow">Review workflow</a></li>
|
||||
<li><a href="#org-roam-1">Org Roam</a></li>
|
||||
<li><a href="#review-workflow-1">Review workflow</a></li>
|
||||
<li><a href="#org-contacts">org-contacts</a></li>
|
||||
<li><a href="#managing-tables">Managing tables</a></li>
|
||||
<li><a href="#copying-records">Copying records</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#ui">UI</a>
|
||||
|
|
@ -7420,7 +7425,6 @@ I’ve seen a couple of cases where people would swap their username and ema
|
|||
<li><a href="#ement-dot-el">ement.el</a></li>
|
||||
<li><a href="#off--jabber"><span class="org-todo done OFF">OFF</span> (OFF) jabber</a></li>
|
||||
<li><a href="#google-translate">Google Translate</a></li>
|
||||
<li><a href="#reverso">Reverso</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#reading-documentation">Reading documentation</a>
|
||||
|
|
|
|||
|
|
@ -39,9 +39,8 @@ A few cases of literate configuration. My blog post that explains some of techni
|
|||
|
||||
<guid>https://sqrtminusone.xyz/configs/emacs/</guid>
|
||||
<description>One day we won&rsquo;t hate one another, no young boy will march to war and I will clean up my Emacs config. But that day isn&rsquo;t today.
|
||||
Me, &lt;2021-05-27 Thu 17:35&gt; in commit 93a0573 T_T Introduction My configuration of GNU Emacs, an awesome text editor program that can do almost anything.
|
||||
At the moment of this writing, this &ldquo;almost anything&rdquo; includes:
|
||||
Writing code. With LSP &amp; Co Emacs is as good as many IDEs, and is certainly on par with editors like VS Code.</description>
|
||||
Me, &lt;2021-05-27 Thu 17:35&gt; in commit 93a0573. Adapted from The Dark Element - &ldquo;The Pallbearer Walks Alone&rdquo;. T_T Introduction My configuration of GNU Emacs, an awesome text editor program that can do almost anything.
|
||||
At the moment of this writing, this &ldquo;almost anything&rdquo; includes:</description>
|
||||
</item>
|
||||
|
||||
<item>
|
||||
|
|
|
|||
BIN
stats/all.png
BIN
stats/all.png
Binary file not shown.
|
Before Width: | Height: | Size: 117 KiB After Width: | Height: | Size: 117 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 64 KiB After Width: | Height: | Size: 64 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