<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>
            
                    orgroam on
                
            
            The Neo-Babbage Files</title>
        <link>https://babbagefiles.xyz/tags/orgroam/</link>
        <description>Recent content  in orgroam
            on The Neo-Babbage Files</description>
        <language>en-gb</language>
        
                <managingEditor>slade@lambda-y.net (Benjamin Slade)</managingEditor>
                <webMaster>slade@lambda-y.net (Benjamin Slade)</webMaster><lastBuildDate>Mon, 29 Dec 2025 11:00:32 +0000</lastBuildDate>
        <generator>Hugo -- gohugo.io</generator>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
            <atom:link href="https://babbagefiles.xyz/tags/orgroam/index.xml" rel="self" type="application/rss&#43;xml" />
        
            
            <item>
                <title>Using Emacs and Org-Roam/Org-Node on Android (with Termux Extra Keys)</title>
                <link>https://babbagefiles.xyz/termux-extra-keys-emacs-org-roam-node-android/</link>
                
                
                <description>&lt;p&gt;My main use of Emacs on Android (via Termux) is to be able to access
and add to my Org-roam library of notes. This post is primarily about
some Termux features which improve the user experience for this use
case. [Update &lt;span class=&#34;timestamp-wrapper&#34;&gt;&lt;span class=&#34;timestamp&#34;&gt;[2025-02-03 Mon]&lt;/span&gt;&lt;/span&gt;: added some screenshots throughout to
give a sense of what it looks like.]&lt;/p&gt;
&lt;h2 id=&#34;trying-to-cope-with-emacs-on-mobile&#34;&gt;Trying to Cope with Emacs on mobile&lt;/h2&gt;
&lt;p&gt;I&amp;rsquo;ve tried a number of different solutions for managing sync&amp;rsquo;ed Org
files on mobile&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;, and some of these are useful for some
purposes, but to being able to access and add to my Org-Roam notes,
I&amp;rsquo;ve found I really need a full-blooded Emacs
instance.&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;And dealing with interacting with Emacs on a touchscreen
interface/touchscreen keyboard is a bit of a nightmare.&lt;/p&gt;



&lt;figure&gt;
    
        &lt;img src=&#34;https://babbagefiles.xyz/ox-hugo/John_Tenniel_-_Playing_cards_-_in_The_nursery_Alice_in_Wonderland.jpg&#34;/&gt; &lt;/figure&gt;

&lt;p&gt;Here, we&amp;rsquo;ll try to improve it a little. Into the rabbit-hole&amp;hellip;.&lt;/p&gt;
&lt;h2 id=&#34;note-about-using-termux-for-emacs-on-android&#34;&gt;Note about using Termux for Emacs on Android&lt;/h2&gt;
&lt;p&gt;You&amp;rsquo;re probably better off installing Termux from &lt;a href=&#34;https://f-droid.org/en/packages/com.termux/&#34;&gt;F-Droid&lt;/a&gt; rather than
from the Google Play Store [see the note from the official Termux
maintainers at:
&lt;a href=&#34;https://github.com/termux/termux-app/discussions/4000&#34;&gt;https://github.com/termux/termux-app/discussions/4000&lt;/a&gt;]. This is
especially true is you want to use Emacs in Termux for managing
Org-roam files which are shared/kept in sync with your Emacs on
desktop machines, which you can do with &lt;a href=&#34;https://syncthing.net/&#34;&gt;Syncthing&lt;/a&gt; (use Catfriend1&amp;rsquo;s
Syncthing-fork [&lt;a href=&#34;https://github.com/Catfriend1/syncthing-android&#34;&gt;Github&lt;/a&gt;]/[&lt;a href=&#34;https://f-droid.org/en/packages/com.github.catfriend1.syncthingandroid/&#34;&gt;F-Droid&lt;/a&gt;] on Android), in order to be able to
grant Termux (and thus Emacs) access to your shared Org files.&lt;/p&gt;
&lt;h2 id=&#34;termux-extra-keys&#34;&gt;Termux Extra Keys&lt;/h2&gt;
&lt;p&gt;Termux has a very useful feature adding &lt;a href=&#34;https://wiki.termux.com/wiki/Touch_Keyboard#Extra_Keys_Row&#34;&gt;extra keys&lt;/a&gt; above the system
keyboard. These are quite useful, including &amp;lsquo;sticky&amp;rsquo; &lt;code&gt;CTRL&lt;/code&gt; and &lt;code&gt;ALT&lt;/code&gt;
keys. (In addition, one can hold &lt;code&gt;volume-down&lt;/code&gt; and press a key for
&lt;code&gt;CTRL&lt;/code&gt; + [that-key] or &lt;code&gt;volume-up&lt;/code&gt; and press a key for &lt;code&gt;ALT&lt;/code&gt; + [that-key];
with &lt;code&gt;volume-up&lt;/code&gt; + &lt;code&gt;t&lt;/code&gt; inputting &lt;code&gt;TAB&lt;/code&gt;. At least on my phone, using the
volume keys as modifiers is fairly awkward/uncomfortable, so I prefer
these extra keys.)&lt;/p&gt;
&lt;p&gt;[Nb.: These keys are toggled on and off by pressing &lt;code&gt;volume-up + k&lt;/code&gt; or
&lt;code&gt;volume-up + q&lt;/code&gt;. This is important to note, for I once toggled them off
by accident and couldn&amp;rsquo;t understand what had happened to them for
several months.]&lt;/p&gt;
&lt;p&gt;Also worth mentioning is the fact that:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;swipe left on extra keys brings up swipe-compatible/regular keyboard
typing&lt;/li&gt;
&lt;li&gt;swipe right on regular keyboard typing area (where extra keys was)
will get you back to extra keys&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The first of these lets you use any of your keyboard&amp;rsquo;s regular
features and so can be quite useful.&lt;/p&gt;
&lt;p&gt;See the &lt;a href=&#34;https://wiki.termux.com/wiki/Touch_Keyboard#Extra_Keys_Row&#34;&gt;Termux manual on Extra Keys&lt;/a&gt; for a description and basic
configuration and usage instructions.&lt;/p&gt;
&lt;h2 id=&#34;extra-keys-for-better-emacs-navigation&#34;&gt;Extra Keys for better Emacs navigation&lt;/h2&gt;
&lt;p&gt;Here, I explore the possibilities offered by the advanced
configuration options for Extra Keys for navigating Emacs in Termux,
especially &lt;a href=&#34;https://www.orgroam.com&#34;&gt;Org-Roam&lt;/a&gt; or &lt;a href=&#34;https://github.com/meedstrom/org-node&#34;&gt;Org-node&lt;/a&gt; &lt;sup id=&#34;fnref:3&#34;&gt;&lt;a href=&#34;#fn:3&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;3&lt;/a&gt;&lt;/sup&gt;, to create faster/easier ways of
calling commonly used commands since the user-interface to Emacs with
an on-screen keyboard is often somewhat frustrating compared to the
using Emacs with a physical keyboard. In addition to extra tappable
keys, Extra Keys also allows for different outcomes when the user does
swipe-up on a key, including the outputting of key sequences, which
can include modifier keys like &lt;code&gt;CTRL&lt;/code&gt;. This allows the possibility of
loading them with Emacs key sequences which would otherwise be much
slower to access with an onscreen keyboard.&lt;/p&gt;
&lt;p&gt;What I wanted was:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;An easy, single-key (no modifier) way of doing forward and backward
searches. It is painful to either hold &lt;code&gt;volume-down&lt;/code&gt; or have to keep
on toggling the Extra Keys&amp;rsquo; &lt;code&gt;CTRL&lt;/code&gt; for each next/previous result. So I
recruited &lt;code&gt;♡&lt;/code&gt; and &lt;code&gt;♤&lt;/code&gt; for forward and back searches, respectively
(because ♡ is sort of pointed down and ♤ is sort of pointing up),
and bound these appropriately in my Emacs configuration (see below).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;other convenient single-key buffer navigation interface features, e.g.,
arrow keys and page-up and page-down&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;some convenience things like closing all but the current window
(&lt;code&gt;delete-other-windows&lt;/code&gt; = &lt;code&gt;C-x 1&lt;/code&gt;), opening up iBuffer, switch-buffer&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;slashes and &lt;code&gt;-&lt;/code&gt; and &lt;code&gt;~&lt;/code&gt; available immediately to tap insert (not under
my keyboard&amp;rsquo;s symbol toggle or long-hold)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ability to call some Org-mode/Org-node commands quickly: including
finding nodes, inserting links to nodes, capturing new dailies,
committing captures, going to today&amp;rsquo;s daily entry, moving forward
and backwards through the dailies, toggling the org-roam backlinks
buffer&lt;/p&gt;



&lt;figure&gt;
    
        &lt;img src=&#34;https://babbagefiles.xyz/ox-hugo/termux-ycombinator-id-node-search-y_comb.png&#34;/&gt; &lt;/figure&gt;

&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;example-configuration&#34;&gt;Example configuration&lt;/h2&gt;
&lt;p&gt;The configuration outlined below is partially specific for my Emacs
configuration, especially for the &lt;code&gt;C-c&lt;/code&gt; (&lt;code&gt;CTRL c&lt;/code&gt;) keys, but some things
involve default Emacs keybindings and it can at least serve as a model
for what one can do. To configure Extra Keys, you need to modify the
&lt;code&gt;extra-keys&lt;/code&gt; part of &lt;code&gt;~/.termux/termux.properties&lt;/code&gt; in this fashion:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;extra-keys &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[[&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;  &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;key: &lt;span class=&#34;s1&#34;&gt;&amp;#39;ESC&amp;#39;&lt;/span&gt;, popup: &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;macro: &lt;span class=&#34;s2&#34;&gt;&amp;#34;CTRL x 1&amp;#34;&lt;/span&gt;, display: &lt;span class=&#34;s2&#34;&gt;&amp;#34;C-x 1&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;}}&lt;/span&gt;, &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;  &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;key: &lt;span class=&#34;s1&#34;&gt;&amp;#39;CTRL&amp;#39;&lt;/span&gt;, popup: &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;macro: &lt;span class=&#34;s2&#34;&gt;&amp;#34;CTRL c&amp;#34;&lt;/span&gt;, display: &lt;span class=&#34;s2&#34;&gt;&amp;#34;C-c&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;}}&lt;/span&gt;, &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;  &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;key: &lt;span class=&#34;s1&#34;&gt;&amp;#39;ALT&amp;#39;&lt;/span&gt;, popup: &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;macro: &lt;span class=&#34;s2&#34;&gt;&amp;#34;ALT x&amp;#34;&lt;/span&gt;, display: &lt;span class=&#34;s2&#34;&gt;&amp;#34;M-x&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;}}&lt;/span&gt;, &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;  &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;key: &lt;span class=&#34;s1&#34;&gt;&amp;#39;♡&amp;#39;&lt;/span&gt;, popup: &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;macro: &lt;span class=&#34;s2&#34;&gt;&amp;#34;CTRL x r b&amp;#34;&lt;/span&gt;, display: &lt;span class=&#34;s2&#34;&gt;&amp;#34;bookmarks&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;}}&lt;/span&gt;, &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;  &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;key: &lt;span class=&#34;s1&#34;&gt;&amp;#39;~&amp;#39;&lt;/span&gt;, popup: &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;macro: &lt;span class=&#34;s2&#34;&gt;&amp;#34;CTRL c n d&amp;#34;&lt;/span&gt;, display: &lt;span class=&#34;s2&#34;&gt;&amp;#34;today&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;}}&lt;/span&gt;, &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;  &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;key: &lt;span class=&#34;s1&#34;&gt;&amp;#39;UP&amp;#39;&lt;/span&gt;, popup: &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;macro: &lt;span class=&#34;s2&#34;&gt;&amp;#34;CTRL c n n&amp;#34;&lt;/span&gt;, display: &lt;span class=&#34;s2&#34;&gt;&amp;#34;new note&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;}}&lt;/span&gt;, &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;  &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;key: &lt;span class=&#34;s1&#34;&gt;&amp;#39;-&amp;#39;&lt;/span&gt;, popup: &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;macro: &lt;span class=&#34;s2&#34;&gt;&amp;#34;CTRL c CTRL k&amp;#34;&lt;/span&gt;, display: &lt;span class=&#34;s2&#34;&gt;&amp;#34;cancel note&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;}}&lt;/span&gt;, &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;  &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;key: &lt;span class=&#34;s1&#34;&gt;&amp;#39;PGUP&amp;#39;&lt;/span&gt;, popup: &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;macro: &lt;span class=&#34;s2&#34;&gt;&amp;#34;CTRL c n y&amp;#34;&lt;/span&gt;, display: &lt;span class=&#34;s2&#34;&gt;&amp;#34;prev note&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;}}]&lt;/span&gt;, &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;  &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;  &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;key: &lt;span class=&#34;s1&#34;&gt;&amp;#39;TAB&amp;#39;&lt;/span&gt;, popup: &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;macro: &lt;span class=&#34;s2&#34;&gt;&amp;#34;CTRL x b&amp;#34;&lt;/span&gt;, display: &lt;span class=&#34;s2&#34;&gt;&amp;#34;alttab&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;}}&lt;/span&gt;, &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;  &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;key: &lt;span class=&#34;s1&#34;&gt;&amp;#39;/&amp;#39;&lt;/span&gt;, popup: &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;macro: &lt;span class=&#34;s2&#34;&gt;&amp;#34;CTRL c n f&amp;#34;&lt;/span&gt;, display: &lt;span class=&#34;s2&#34;&gt;&amp;#34;find node&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;}}&lt;/span&gt;, &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;  &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;key: &lt;span class=&#34;s1&#34;&gt;&amp;#39;\\\\&amp;#39;&lt;/span&gt;, popup: &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;macro: &lt;span class=&#34;s2&#34;&gt;&amp;#34;CTRL c n i&amp;#34;&lt;/span&gt;, display: &lt;span class=&#34;s2&#34;&gt;&amp;#34;insert link&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;}}&lt;/span&gt;, &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;  &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;key: &lt;span class=&#34;s1&#34;&gt;&amp;#39;♤&amp;#39;&lt;/span&gt;, popup: &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;macro: &lt;span class=&#34;s2&#34;&gt;&amp;#34;CTRL x CTRL b&amp;#34;&lt;/span&gt;, display: &lt;span class=&#34;s2&#34;&gt;&amp;#34;ibuffer&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;}}&lt;/span&gt;, &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;  &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;key: &lt;span class=&#34;s1&#34;&gt;&amp;#39;LEFT&amp;#39;&lt;/span&gt;, popup: &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;macro: &lt;span class=&#34;s2&#34;&gt;&amp;#34;CTRL c n l&amp;#34;&lt;/span&gt;, display: &lt;span class=&#34;s2&#34;&gt;&amp;#34;backlinks&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;}}&lt;/span&gt;, &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;  &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;key: &lt;span class=&#34;s1&#34;&gt;&amp;#39;DOWN&amp;#39;&lt;/span&gt;, popup: &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;macro: &lt;span class=&#34;s2&#34;&gt;&amp;#34;CTRL c CTRL c&amp;#34;&lt;/span&gt;, display: &lt;span class=&#34;s2&#34;&gt;&amp;#34;commit&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;}}&lt;/span&gt;, &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;  &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;key: &lt;span class=&#34;s1&#34;&gt;&amp;#39;RIGHT&amp;#39;&lt;/span&gt;, popup: &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;macro: &lt;span class=&#34;s2&#34;&gt;&amp;#34;CTRL c n v&amp;#34;&lt;/span&gt;, display: &lt;span class=&#34;s2&#34;&gt;&amp;#34;goto-date&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;}}&lt;/span&gt;, &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;  &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;key: &lt;span class=&#34;s1&#34;&gt;&amp;#39;PGDN&amp;#39;&lt;/span&gt;, popup: &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;macro: &lt;span class=&#34;s2&#34;&gt;&amp;#34;CTRL c n t&amp;#34;&lt;/span&gt;, display: &lt;span class=&#34;s2&#34;&gt;&amp;#34;next note&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;}}]]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;


&lt;figure&gt;
    
        &lt;img src=&#34;https://babbagefiles.xyz/ox-hugo/termux-ibuffer.png&#34;/&gt; &lt;/figure&gt;

&lt;p&gt;Here is a rough summary of what this does:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;key&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;do on key tap&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;do on key swipe up&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;display on swipe up&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;what key swipe up does&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;ESC&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&amp;lsquo;esc&amp;rsquo;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;C-x 1&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&amp;ldquo;C-x 1&amp;rdquo;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;delete-other-windows&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;CTRL&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&amp;lsquo;ctrl&amp;rsquo; (&lt;code&gt;C-&lt;/code&gt;) toggle&lt;/td&gt;
&lt;td&gt;&lt;code&gt;C-c&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&amp;ldquo;C-c&amp;rdquo;&lt;/td&gt;
&lt;td&gt;start &lt;code&gt;C-c&lt;/code&gt; prefix command&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;ALT&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&amp;lsquo;alt&amp;rsquo; (&lt;code&gt;M-&lt;/code&gt;) toggle&lt;/td&gt;
&lt;td&gt;&lt;code&gt;M-x&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&amp;ldquo;M-x&amp;rdquo;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;M-x&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;♡&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;isearch-forward&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;C-x r b&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&amp;ldquo;bookmarks&amp;rdquo;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;bookmark-jump&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;~&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&amp;lsquo;~&amp;rsquo;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;C-c n d&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&amp;ldquo;today&amp;rdquo;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;org-node-goto-today&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;↑&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&amp;lsquo;up&amp;rsquo;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;C-c n n&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&amp;ldquo;new note&amp;rdquo;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;org-roam-dailies-capture-today&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;-&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&amp;lsquo;-&amp;rsquo;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;C-c C-k&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&amp;ldquo;cancel note&amp;rdquo;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;C-c C-k&lt;/code&gt; to cancel capture&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;PGUP&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&amp;lsquo;pageup&amp;rsquo;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;C-c n y&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&amp;ldquo;prev note&amp;rdquo;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;org-node-goto-next-day&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;TAB&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&amp;lsquo;tab key&amp;rsquo;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;C-x b&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&amp;ldquo;alttab&amp;rdquo;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;consult-buffer&lt;/code&gt; (&lt;code&gt;switch-to-buffer&lt;/code&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&amp;lsquo;/&amp;rsquo;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;C-c n f&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&amp;ldquo;find node&amp;rdquo;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;org-node-find&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;\&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&amp;lsquo;\&amp;rsquo;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;C-c n i&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&amp;ldquo;insert link&amp;rdquo;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;org-node-insert-link*&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;♤&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;isearch-backward&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;C-x C-b&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&amp;ldquo;ibuffer&amp;rdquo;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;ibuffer&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;←&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&amp;lsquo;left&amp;rsquo;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;C-c n l&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&amp;ldquo;backlinks&amp;rdquo;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;org-roam-buffer-toggle&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;↓&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&amp;lsquo;down&amp;rsquo;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;C-c C-c&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&amp;ldquo;commit&amp;rdquo;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;C-c C-c&lt;/code&gt; to &amp;lsquo;commit&amp;rsquo;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;→&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&amp;lsquo;right&amp;rsquo;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;C-c n v&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&amp;ldquo;goto-date&amp;rdquo;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;org-node-goto-daily&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;PGDN&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&amp;lsquo;pagedown&amp;rsquo;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;C-c n t&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&amp;ldquo;next note&amp;rdquo;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;org-node-goto-prev-day&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;In case you do use Org-node (and, if you&amp;rsquo;re trying to do Org-roam
things on Android, I would again recommend considering Org-node, if
only for making interactions fast enough to not be completely
frustrating), you could implement the following interactive functions:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-elisp&#34; data-lang=&#34;elisp&#34;&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;defun&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;org-node-goto-daily&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;interactive&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;org-node-seq--jump&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;d&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;

&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;defun&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;org-node-goto-today&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;interactive&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;org-node-seq-goto&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;d&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;format-time-string&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;%F&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)))&lt;/span&gt;

&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;defun&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;org-node-goto-next-day&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;interactive&lt;/span&gt; &lt;span class=&#34;no&#34;&gt;nil&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;org-mode&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;org-node-seq--goto-next&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;d&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;

&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;defun&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;org-node-goto-prev-day&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;interactive&lt;/span&gt; &lt;span class=&#34;no&#34;&gt;nil&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;org-mode&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;org-node-seq--goto-previous&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;d&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;

&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;defun&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;org-roam-dailies-capture-today&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;interactive&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;org-roam-dailies-capture-today&lt;/span&gt; &lt;span class=&#34;no&#34;&gt;nil&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;d&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;And then bind:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;org-node-insert-link*&lt;/code&gt; to &amp;ldquo;C-c n i&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;org-node-find&lt;/code&gt; to &amp;ldquo;C-c n f&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;org-node-goto-daily&lt;/code&gt; to &amp;ldquo;C-c n v&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;org-node-goto-today&lt;/code&gt; to &amp;ldquo;C-c n d&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;org-node-goto-next-day&lt;/code&gt; to &amp;ldquo;C-c n t&amp;rdquo;  (&#39;[t]omorrow&amp;rsquo;)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;org-node-goto-prev-day&lt;/code&gt; to &amp;ldquo;C-c n y&amp;rdquo; (&#39;[y]esterday&amp;rsquo;)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;org-roam-dailies-capture-today&lt;/code&gt; to &amp;ldquo;C-c n n&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;org-roam-buffer-toggle&lt;/code&gt; to &amp;ldquo;C-c n l&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Most of the other keybindings implemented above are default Emacs
bindings.&lt;/p&gt;



&lt;figure&gt;
    
        &lt;img src=&#34;https://babbagefiles.xyz/ox-hugo/termux-org-node-id-search-clo_s.png&#34;/&gt; &lt;/figure&gt;

&lt;p&gt;In terms of how this improves the Termux Emacs experience, consider
that you could open up Emacs in Termux and then proceed by:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;swiping up on &lt;code&gt;↑&lt;/code&gt; to open up a new Org-[roam/node] note in today&amp;rsquo;s
daily journal&lt;/li&gt;
&lt;li&gt;then swiping left on the extra keys pane to get into normal keyboard
entry mode&lt;/li&gt;
&lt;li&gt;swipe/glide-typing the text of your note quickly, and pressing enter&lt;/li&gt;
&lt;li&gt;swiping right on the now clear virtual keyboard pane to bring back
the extra keys&lt;/li&gt;
&lt;li&gt;swiping up on &lt;code&gt;\&lt;/code&gt; to insert (&amp;lsquo;splice in&amp;rsquo;) a org-id link to another
Org-roam node or two&lt;/li&gt;
&lt;li&gt;swiping up on &lt;code&gt;↓&lt;/code&gt; to commit/complete your daily note&lt;/li&gt;
&lt;li&gt;swiping up on &lt;code&gt;PGUP&lt;/code&gt; to see yesterday&amp;rsquo;s Org-roam daily journal&lt;/li&gt;
&lt;li&gt;swiping up on &lt;code&gt;/&lt;/code&gt; to search for your &amp;ldquo;Termux&amp;rdquo; Org-roam node to add
notes about Extra Keys to your Termux Org-roam node/file&lt;/li&gt;
&lt;li&gt;tapping &lt;code&gt;♡&lt;/code&gt; to search through the entry to see all the places you made
reference to &amp;ldquo;extra keys&amp;rdquo;&lt;/li&gt;
&lt;li&gt;swiping up on &lt;code&gt;←&lt;/code&gt; to see what backlinks you have for &amp;ldquo;Termux&amp;rdquo;&lt;/li&gt;
&lt;li&gt;swiping up on &lt;code&gt;ESC&lt;/code&gt; to get back to single window view&lt;/li&gt;
&lt;li&gt;swiping up on &lt;code&gt;♤&lt;/code&gt; to get to IBuffer to be able to manage your buffers&lt;/li&gt;
&lt;li&gt;swiping up on &lt;code&gt;↑&lt;/code&gt; to open another new daily note in today&amp;rsquo;s journal&lt;/li&gt;
&lt;li&gt;changing your mind and swiping up on &lt;code&gt;-&lt;/code&gt; to cancel the note capture&lt;/li&gt;
&lt;li&gt;&amp;hellip;..&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is all a lot faster than having to tap &lt;code&gt;CTRL&lt;/code&gt; and then type &lt;code&gt;c&lt;/code&gt; &lt;code&gt;n&lt;/code&gt; &lt;code&gt;n&lt;/code&gt;
to start a new entry in today&amp;rsquo;s Org-roam daily journal, typing it out
(tapping &lt;code&gt;CTRL&lt;/code&gt; and then &lt;code&gt;c n i&lt;/code&gt; each time you want to link text to
another node), and then tapping &lt;code&gt;CTRL&lt;/code&gt; and then &lt;code&gt;c&lt;/code&gt; and then &lt;code&gt;CTRL&lt;/code&gt; and then
&lt;code&gt;c&lt;/code&gt; to commit it, and so on.&lt;/p&gt;
&lt;p&gt;For a bonus reduction in modifier and key tapping, consider using a
modal mode in Emacs: I particularly like &lt;a href=&#34;https://github.com/meow-edit/meow&#34;&gt;meow&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;appendix-key-mnemonics&#34;&gt;Appendix: Key Mnemonics&lt;/h2&gt;
&lt;p&gt;A potentially useful/emblematic list of mnemonics for the keys. [I use
☝️ to indicate swiping up on a key below.] Some of these mnemonics are
stretches, but there are only so many keys and a particular set of
things one wants, so stretches are sometimes required.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;♡&lt;/code&gt; is a forwards/downwards search because the heart points down&lt;/li&gt;
&lt;li&gt;&lt;code&gt;♤&lt;/code&gt; is a backwards/upwards search because the spade points up [and we
use these pointy characters indicating card suits in preference to
others because I&amp;rsquo;m not going to be typing them on Android ever]&lt;/li&gt;
&lt;li&gt;(all other single tap keys just do what it says on the tin,
inserting characters, toggling modifiers, &amp;amp;c.)&lt;/li&gt;
&lt;li&gt;☝️ &lt;code&gt;♡&lt;/code&gt; is bookmarks because these are &amp;lsquo;favourites&amp;rsquo; because you &amp;lsquo;♡&amp;rsquo; them&lt;/li&gt;
&lt;li&gt;☝️ &lt;code&gt;♤&lt;/code&gt; is IBuffer because if you have icons enabled in your IBuffer&lt;sup id=&#34;fnref:4&#34;&gt;&lt;a href=&#34;#fn:4&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;4&lt;/a&gt;&lt;/sup&gt;
then you&amp;rsquo;ll see icons and ♤ is like an icon (I know this one is a
stretch, but&amp;hellip;.&lt;sup id=&#34;fnref:5&#34;&gt;&lt;a href=&#34;#fn:5&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;5&lt;/a&gt;&lt;/sup&gt;)&lt;/li&gt;
&lt;li&gt;☝️ &lt;code&gt;ESC&lt;/code&gt; is &lt;code&gt;delete-other-windows&lt;/code&gt; because you&amp;rsquo;re &amp;lsquo;escaping&amp;rsquo; from them&lt;/li&gt;
&lt;li&gt;☝️ &lt;code&gt;CTRL&lt;/code&gt; is &lt;code&gt;C-c&lt;/code&gt; because &lt;code&gt;C-c&lt;/code&gt; starts with CTRL&lt;/li&gt;
&lt;li&gt;☝️ &lt;code&gt;ALT&lt;/code&gt; is &lt;code&gt;M-x&lt;/code&gt; because &lt;code&gt;M-x&lt;/code&gt; starts with ALT&lt;/li&gt;
&lt;li&gt;☝️ &lt;code&gt;~&lt;/code&gt; is &lt;code&gt;org-node-goto-today&lt;/code&gt; because in Unix &lt;code&gt;~&lt;/code&gt; is &amp;ldquo;user&amp;rsquo;s home
directory&amp;rdquo; and today&amp;rsquo;s daily Org-roam entry is a sort of a &amp;lsquo;home&amp;rsquo;
(it makes sense to me anyway)&lt;/li&gt;
&lt;li&gt;☝️ &lt;code&gt;-&lt;/code&gt; is &lt;code&gt;C-c C-k&lt;/code&gt; is which &amp;lsquo;cancel&amp;rsquo; in lots of places (like capture
templates) and &lt;code&gt;-&lt;/code&gt; is a negative sign and so can be understood like
&amp;ldquo;don&amp;rsquo;t do it!&amp;rdquo;&lt;/li&gt;
&lt;li&gt;☝️ &lt;code&gt;↑&lt;/code&gt; is &lt;code&gt;org-roam-dailies-capture-today&lt;/code&gt; because this is the function
to capture a new Org-roam daily note and ↑ is like &amp;ldquo;opening up
something&amp;rdquo;&lt;/li&gt;
&lt;li&gt;☝️ &lt;code&gt;↓&lt;/code&gt; is &lt;code&gt;C-c C-c&lt;/code&gt; which is in many places in Emacs something like
&amp;lsquo;commit&amp;rsquo;, and for capture templates it is the &amp;lsquo;finish capture&amp;rsquo;
binding and if ↑ is opening a new note, then ↓ is finishing it,
putting it &amp;lsquo;down&amp;rsquo;&lt;/li&gt;
&lt;li&gt;☝️ &lt;code&gt;←&lt;/code&gt; is open up Org-roam backlinks buffer because ← is pointing
&amp;lsquo;backwards&amp;rsquo;&lt;/li&gt;
&lt;li&gt;☝️ &lt;code&gt;→&lt;/code&gt; is &lt;code&gt;org-node-goto-daily&lt;/code&gt; because we&amp;rsquo;re looking &amp;lsquo;forward&amp;rsquo; towards a
specific date and going to it&lt;/li&gt;
&lt;li&gt;☝️ &lt;code&gt;PGUP&lt;/code&gt; is &lt;code&gt;org-node-goto-prev-day&lt;/code&gt; because we&amp;rsquo;re going
&amp;lsquo;up&amp;rsquo;/&amp;lsquo;backwards&amp;rsquo; in the calendar (of daily Org-roam journal entries)&lt;/li&gt;
&lt;li&gt;☝️ &lt;code&gt;PGDN&lt;/code&gt; is &lt;code&gt;org-node-goto-prev-day&lt;/code&gt; because we&amp;rsquo;re going
&amp;lsquo;down&amp;rsquo;/&amp;lsquo;forwards&amp;rsquo; in the calendar (of daily Org-roam journal
entries)&lt;/li&gt;
&lt;li&gt;☝️ &lt;code&gt;TAB&lt;/code&gt; is &lt;code&gt;consult-buffer&lt;/code&gt; / &lt;code&gt;switch-to-buffer&lt;/code&gt; because this function is
sort of like &lt;code&gt;Alt-TAB&lt;/code&gt; in many window environments&lt;/li&gt;
&lt;li&gt;☝️ &lt;code&gt;/&lt;/code&gt; is &lt;code&gt;org-node-find&lt;/code&gt; because &lt;code&gt;/&lt;/code&gt; is the search key in Vim, and also
associated with searches elsewhere in Unixland (the marker of
beginning/end of regexs, often used for searches) [and because &lt;code&gt;/&lt;/code&gt; is
the opposite slash from &lt;code&gt;\&lt;/code&gt;, which we&amp;rsquo;re going to use for the
complementary operation to insert links]&lt;/li&gt;
&lt;li&gt;☝️ &lt;code&gt;\&lt;/code&gt; is &lt;code&gt;org-node-insert-link*&lt;/code&gt; because in many environments &lt;code&gt;\&lt;/code&gt; is some
sort of &amp;lsquo;splice&amp;rsquo; indicator&lt;sup id=&#34;fnref:6&#34;&gt;&lt;a href=&#34;#fn:6&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;6&lt;/a&gt;&lt;/sup&gt;, and inserting a link to a node is
also sort of a splice [and because &lt;code&gt;\&lt;/code&gt; is the opposite slash from &lt;code&gt;/&lt;/code&gt;
which performs a complementary operation]&lt;/li&gt;
&lt;/ul&gt;
&lt;section class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34; role=&#34;doc-endnote&#34;&gt;
&lt;p&gt;E.g., &lt;a href=&#34;https://www.orgzly.com/&#34;&gt;orgzly&lt;/a&gt;, &lt;a href=&#34;https://organice.200ok.ch/&#34;&gt;organice&lt;/a&gt;. &lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:2&#34; role=&#34;doc-endnote&#34;&gt;
&lt;p&gt;There is a &lt;a href=&#34;https://f-droid.org/packages/org.gnu.emacs/&#34;&gt;full GUI Emacs now on Android&lt;/a&gt;, but I
don&amp;rsquo;t know how to get it to be able to access files shared via
Syncthing, and, anyway, you wouldn&amp;rsquo;t be able to do the sort of
convenient keyboard hacks there I&amp;rsquo;m going to discuss in this post. &lt;a href=&#34;#fnref:2&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:3&#34; role=&#34;doc-endnote&#34;&gt;
&lt;p&gt;I highly recommend looking at Martin Edström&amp;rsquo;s &lt;a href=&#34;https://github.com/meedstrom/org-node&#34;&gt;Org-node&lt;/a&gt; package if
you&amp;rsquo;re trying to manage Org-roam notes on Android; the performance
differences between the two packages are especially noticeable on
Android (orders of magnitude&lt;sup id=&#34;fnref:7&#34;&gt;&lt;a href=&#34;#fn:7&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;7&lt;/a&gt;&lt;/sup&gt;). And the two packages can live
alongside each other, so you can keep your existing Org-roam set-up
going while you set-up/experiment with Org-node. &lt;a href=&#34;#fnref:3&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:4&#34; role=&#34;doc-endnote&#34;&gt;
&lt;p&gt;With a package like
&lt;a href=&#34;https://github.com/seagle0128/all-the-icons-ibuffer&#34;&gt;https://github.com/seagle0128/all-the-icons-ibuffer&lt;/a&gt;. On IBuffer
itself, see &lt;a href=&#34;https://www.emacswiki.org/emacs/IbufferMode&#34;&gt;https://www.emacswiki.org/emacs/IbufferMode&lt;/a&gt;. &lt;a href=&#34;#fnref:4&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:5&#34; role=&#34;doc-endnote&#34;&gt;
&lt;p&gt;Well, okay, so here&amp;rsquo;s another one: think of
IBuffer as trying to right your buffer organisation like Two, Five,
and Seven (of Spades) in Alice in Wonderland trying sort out the
Queen of Hearts&amp;rsquo; rose-bushes (by painting the roses red):
&lt;img src=&#34;https://babbagefiles.xyz/ox-hugo/Two_Five_and_Seven_of_Spades_Painting_the_Rosebushes.jpg&#34; alt=&#34;&#34;&gt; &lt;a href=&#34;#fnref:5&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:6&#34; role=&#34;doc-endnote&#34;&gt;
&lt;p&gt;From &lt;a href=&#34;https://port70.net/~nsz/c/c11/n1570.html#5.1.1.2&#34;&gt;https://port70.net/~nsz/c/c11/n1570.html#5.1.1.2&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Each instance of a backslash character (\) immediately followed by a
new-line character is deleted, &lt;strong&gt;splicing&lt;/strong&gt; physical source lines to form
logical source lines. Only the last backslash on any physical source
line shall be eligible for being part of such a &lt;strong&gt;splice&lt;/strong&gt;. A source file
that is not empty shall end in a new-line character, which shall not
be immediately preceded by a backslash character before any such
&lt;strong&gt;splicing&lt;/strong&gt; takes place.&lt;/p&gt;
&lt;/blockquote&gt;
 &lt;a href=&#34;#fnref:6&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/li&gt;
&lt;li id=&#34;fn:7&#34; role=&#34;doc-endnote&#34;&gt;
&lt;p&gt;Android 10/11 seems to have introduced
which restricts
how regular applications/users can interact with the filesystem, for
&amp;lsquo;security&amp;rsquo; reasons, implemented via &lt;a href=&#34;https://en.wikipedia.org/wiki/Filesystem_in_Userspace&#34;&gt;Filesystem in Userspace (FUSE)&lt;/a&gt;,
which makes operations which interact with the file system sometimes
very sluggish. Accessing directories with lots of files, as one might
have in an Org-roam directory, can be amazingly slow. The increases
exponentially with the number of Org-roam files.&lt;/p&gt;
&lt;p&gt;Org-node is implemented in such a way
[cf. &lt;a href=&#34;https://github.com/meedstrom/org-node/issues/26&#34;&gt;https://github.com/meedstrom/org-node/issues/26&lt;/a&gt;] that it
caches/stores and accesses many things in ways that avoid directly
accessing the file-system (especially in &lt;a href=&#34;https://github.com/meedstrom/org-node-fakeroam&#34;&gt;org-node-fakeroam&lt;/a&gt;), where
Org-roam does not. &lt;a href=&#34;#fnref:7&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;
</description>
                
                        <author>Benjamin.Slade@fakeEmailToMakeValidatorHappy.com (Benjamin Slade)</author>
                
                     
                        
                             
                            
                                
                                 
                                    <category domain="https://babbagefiles.xyz/categories/emacs">emacs</category>
                                
                            
                        
                     
                        
                     
                        
                             
                            
                                
                                 
                                    <category domain="https://babbagefiles.xyz/tags/orgroam">orgroam</category>
                                 
                                    <category domain="https://babbagefiles.xyz/tags/android">android</category>
                                
                            
                        
                    
                
                <guid>https://babbagefiles.xyz/termux-extra-keys-emacs-org-roam-node-android/</guid>
                <pubDate>Thu, 30 Jan 2025 14:15:00 -0600</pubDate>
            </item>
        
            
            <item>
                <title>Automatically adding information to Org-roam file properties</title>
                <link>https://babbagefiles.xyz/org-roam-auto-propertise/</link>
                
                
                <description>&lt;p&gt;This expands on a feature I included in the setup for using &lt;a href=&#34;https://www.orgroam.com/&#34;&gt;Org-roam&lt;/a&gt;
on Android/LineageOS in the &lt;a href=&#34;../org-roam-on-android&#34;&gt;last post&lt;/a&gt;, specifically automatically
adding properties to newly created Org-roam files.&lt;/p&gt;
&lt;p&gt;Since Org-roam v2 creates a top properties drawer (with an &lt;code&gt;:ID:&lt;/code&gt; tag) anyway, it is nice to stick other information there as well. Specifically, information that could be useful in some situation, but which usually we don&amp;rsquo;t want to see, like &lt;code&gt;:AUTHOR:&lt;/code&gt; (it&amp;rsquo;s probably you, and you know who you are), &lt;code&gt;:CREATION_TIME:&lt;/code&gt; (and why not use Unix epoch time?), and so on. I have org drawers fold themselves automatically, so the normally-useless information doesn&amp;rsquo;t distract me.&lt;/p&gt;
&lt;p&gt;We can do this by leveraging Org-roam&amp;rsquo;s &lt;code&gt;org-roam-capture-new-node-hook&lt;/code&gt;, and some &lt;code&gt;org-roam-add-property&lt;/code&gt; function calls, as below.&lt;/p&gt;
&lt;p&gt;But, while we&amp;rsquo;re at it, we might also record &lt;strong&gt;where&lt;/strong&gt; a note was made from. There are a number of ways we might do this, but an easy one (only requiring &lt;code&gt;curl&lt;/code&gt; and an active Internet connection) is using &lt;a href=&#34;https://ipinfo.io/developers/data-types#geolocation-data&#34;&gt;ipinfo.io&lt;/a&gt;. &lt;code&gt;curl ipinfo.io&lt;/code&gt; will give you a bunch of information in JSON format about your internet provider, including latitude and longitude, which will likely be at least somewhere &lt;strong&gt;near&lt;/strong&gt; your present location. And &lt;code&gt;curl ipinfo.io/loc&lt;/code&gt; will return just latitude,longitude.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-elisp&#34; data-lang=&#34;elisp&#34;&gt;  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;defun&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;bms/add-other-auto-props-to-org-roam-properties&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
    &lt;span class=&#34;c1&#34;&gt;;; if the file already exists, don&amp;#39;t do anything, otherwise...&lt;/span&gt;
    &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;unless&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;file-exists-p&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;buffer-file-name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
      &lt;span class=&#34;c1&#34;&gt;;; if there&amp;#39;s also a CREATION_TIME property, don&amp;#39;t modify it&lt;/span&gt;
      &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;unless&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;org-find-property&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;CREATION_TIME&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
        &lt;span class=&#34;c1&#34;&gt;;; otherwise, add a Unix epoch timestamp for CREATION_TIME prop&lt;/span&gt;
        &lt;span class=&#34;c1&#34;&gt;;; (this is what &amp;#34;%s&amp;#34; does - see http://doc.endlessparentheses.com/Fun/format-time-string )&lt;/span&gt;
        &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;org-roam-add-property&lt;/span&gt;
         &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;format-time-string&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;%s&amp;#34;&lt;/span&gt;
                             &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;nth&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;
                                  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;file-attributes&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;buffer-file-name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))))&lt;/span&gt;
         &lt;span class=&#34;s&#34;&gt;&amp;#34;CREATION_TIME&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
      &lt;span class=&#34;c1&#34;&gt;;; similarly for AUTHOR and MAIL properties&lt;/span&gt;
      &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;unless&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;org-find-property&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;AUTHOR&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
        &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;org-roam-add-property&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;roam-user&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;AUTHOR&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
      &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;unless&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;org-find-property&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;MAIL&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
        &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;org-roam-add-property&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;roam-email&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;MAIL&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
      &lt;span class=&#34;c1&#34;&gt;;; also add the latitude and longitude&lt;/span&gt;
      &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;unless&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;org-find-property&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;LAT_LONG&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
        &lt;span class=&#34;c1&#34;&gt;;; recheck location:&lt;/span&gt;
        &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;bms/get-lat-long-from-ipinfo&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
        &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;org-roam-add-property&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;concat&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;number-to-string&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;calendar-latitude&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;,&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;number-to-string&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;calendar-longitude&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;LAT-LONG&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))))&lt;/span&gt;

  &lt;span class=&#34;c1&#34;&gt;;; hook to be run whenever an org-roam capture completes&lt;/span&gt;
  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;add-hook&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;org-roam-capture-new-node-hook&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;#&amp;#39;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;bms/add-other-auto-props-to-org-roam-properties&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;

&lt;span class=&#34;c1&#34;&gt;;; function to find latitude &amp;amp; longitude&lt;/span&gt;
&lt;span class=&#34;c1&#34;&gt;;;                      (requires curl to be installed on system)&lt;/span&gt;
&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;setq&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;calendar-latitude&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;setq&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;calendar-longitude&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;defun&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;bms/get-lat-long-from-ipinfo&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;let*&lt;/span&gt;
      &lt;span class=&#34;p&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;latlong&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;substring&lt;/span&gt;
                 &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;shell-command-to-string&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;curl -s &amp;#39;ipinfo.io/loc&amp;#39;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
                   &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;-1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
       &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;latlong-list&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;split-string&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;latlong&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;,&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)))&lt;/span&gt;
    &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;setq&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;calendar-latitude&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;string-to-number&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;car&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;latlong-list&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)))&lt;/span&gt;
    &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;setq&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;calendar-longitude&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;string-to-number&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;cadr&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;latlong-list&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)))))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;You might also calculate/set &lt;code&gt;calendar-latitude&lt;/code&gt; and &lt;code&gt;calendar-longitude&lt;/code&gt; in other ways. Including just hard-coding them for stationary machines. On Android, we could in theory make use of the Termux command &lt;code&gt;termux-location&lt;/code&gt;, which queries the device&amp;rsquo;s GPS. But unfortunately it doesn&amp;rsquo;t always work (if it can&amp;rsquo;t find a good connection to a GPS satellite) and even when it does work it&amp;rsquo;s slow, so it&amp;rsquo;s not something you&amp;rsquo;d want to call every time you made a note. &lt;a href=&#34;https://gitlab.freedesktop.org/geoclue/geoclue/-/wikis/home&#34;&gt;GeoClue&lt;/a&gt; would be another possible source.&lt;/p&gt;
&lt;p&gt;(If you&amp;rsquo;re using a VPN, you&amp;rsquo;ll want to escape from it somehow to get something closer to your real location. How you do this will vary based on your VPN provider and other factors. (If you&amp;rsquo;re calling from Emacs, and you use something like Mullvad, you may want to revise the &lt;code&gt;shell-command-to-string&lt;/code&gt; to call up a bash session/script, then exclude that specific bash session/script from the VPN, and &lt;em&gt;then&lt;/em&gt; call &lt;code&gt;curl&lt;/code&gt;, so that the call references your &amp;ldquo;real&amp;rdquo; IP. E.g. if you&amp;rsquo;re using Mullvad, then:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;cp&#34;&gt;#!/bin/bash
&lt;/span&gt;&lt;span class=&#34;cp&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;PID&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;sb&#34;&gt;`&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$$&lt;/span&gt;&lt;span class=&#34;sb&#34;&gt;`&lt;/span&gt;
mullvad split-tunnel pid add &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;PID&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
curl ipinfo.io/loc &lt;span class=&#34;c1&#34;&gt;# for lat/long ; `curl ipinfo.io` for full info&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;might give you a start on something.))&lt;/p&gt;
&lt;p&gt;Let me know if you think of other properties that could be useful to automatically add to Org-roam file properties.&lt;/p&gt;
</description>
                
                        <author>Benjamin.Slade@fakeEmailToMakeValidatorHappy.com (Benjamin Slade)</author>
                
                     
                        
                             
                            
                                
                                 
                                    <category domain="https://babbagefiles.xyz/categories/emacs">emacs</category>
                                 
                                    <category domain="https://babbagefiles.xyz/categories/org">org</category>
                                
                            
                        
                     
                        
                     
                        
                             
                            
                                
                                 
                                    <category domain="https://babbagefiles.xyz/tags/orgroam">orgroam</category>
                                
                            
                        
                    
                
                <guid>https://babbagefiles.xyz/org-roam-auto-propertise/</guid>
                <pubDate>Tue, 10 Aug 2021 21:12:00 -0600</pubDate>
            </item>
        
            
            <item>
                <title>Org-roam on Android</title>
                <link>https://babbagefiles.xyz/org-roam-on-android/</link>
                
                
                <description>&lt;p&gt;I&amp;rsquo;ve been using the note-taking &lt;a href=&#34;https://en.wikipedia.org/wiki/Zettelkasten&#34;&gt;Zettelkasten&lt;/a&gt;-ish &lt;a href=&#34;https://www.orgroam.com/&#34;&gt;Org-roam&lt;/a&gt; system for a
few months and it&amp;rsquo;s been very useful to me, just as a low-friction way
of making more notes and easily finding and/or (re)discovering notes
that I&amp;rsquo;ve made.&lt;/p&gt;



&lt;figure&gt;
    
        &lt;img src=&#34;https://babbagefiles.xyz/ox-hugo/Screenshot_20210809-201713_Termux.png&#34;/&gt; &lt;/figure&gt;

&lt;p&gt;It&amp;rsquo;s pretty useful to be able to have access to these notes, and be
able to quickly add notes, on mobile as well. I thought it might be
useful to include here some notes on how to do, since (especially
since &lt;a href=&#34;https://blog.jethro.dev/posts/org_roam_v2/&#34;&gt;v2 of Org-roam&lt;/a&gt;) there are some hurdles.&lt;/p&gt;
&lt;p&gt;On Android/LineageOS install the &lt;a href=&#34;https://f-droid.org/&#34;&gt;F-Droid app store&lt;/a&gt;, and then from
there install &lt;a href=&#34;https://f-droid.org/en/packages/com.termux/&#34;&gt;Termux&lt;/a&gt;. Open Termux and install four things we&amp;rsquo;ll need
(strictly speaking you don&amp;rsquo;t need curl and ripgrep, but they&amp;rsquo;ll
be useful): Emacs, sqlite, curl, and ripgrep via &lt;code&gt;pkg install emacs sqlite curl ripgrep&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;You can then open up Emacs via &lt;code&gt;emacs&lt;/code&gt; and get started.&lt;/p&gt;
&lt;p&gt;I include here a commented partial version of my &lt;code&gt;~/.emacs.d/init.el&lt;/code&gt;
configuration file for my Termux/Emacs Org-roam setup:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-elisp&#34; data-lang=&#34;elisp&#34;&gt;&lt;span class=&#34;c1&#34;&gt;;; BASIC SETUP:&lt;/span&gt;

&lt;span class=&#34;c1&#34;&gt;;; package setup - bootstrap the package system&lt;/span&gt;
&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;require&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;package&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;setq&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;package-enable-at-startup&lt;/span&gt; &lt;span class=&#34;no&#34;&gt;nil&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;setq&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;gnutls-algorithm-priority&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;NORMAL:-VERS-TLS1.3&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;setq&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;package-archives&lt;/span&gt;
      &lt;span class=&#34;o&#34;&gt;&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;GNU ELPA&amp;#34;&lt;/span&gt;     &lt;span class=&#34;o&#34;&gt;.&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;https://elpa.gnu.org/packages/&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
        &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;ORG&amp;#34;&lt;/span&gt;		&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;https://orgmode.org/elpa/&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
        &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;MELPA Stable&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;.&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;https://stable.melpa.org/packages/&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
        &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;MELPA&amp;#34;&lt;/span&gt;        &lt;span class=&#34;o&#34;&gt;.&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;https://melpa.org/packages/&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
      &lt;span class=&#34;nv&#34;&gt;package-archive-priorities&lt;/span&gt;
      &lt;span class=&#34;o&#34;&gt;&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;ORG&amp;#34;&lt;/span&gt;		&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;20&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
        &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;MELPA&amp;#34;&lt;/span&gt;        &lt;span class=&#34;o&#34;&gt;.&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;15&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
        &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;MELPA Stable&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;.&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;10&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
        &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;GNU ELPA&amp;#34;&lt;/span&gt;     &lt;span class=&#34;o&#34;&gt;.&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)))&lt;/span&gt;

&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;package-initialize&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;

&lt;span class=&#34;c1&#34;&gt;;; Bootstrap `use-package&amp;#39;&lt;/span&gt;
&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;unless&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;package-installed-p&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;use-package&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;package-refresh-contents&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;package-install&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;use-package&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;

&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;eval-when-compile&lt;/span&gt;
  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;require&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;use-package&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;

&lt;span class=&#34;c1&#34;&gt;;; for Termux-specific things; useful if you want to share&lt;/span&gt;
&lt;span class=&#34;c1&#34;&gt;;; configs across platforms&lt;/span&gt;
&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;defvar&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;termux-p&lt;/span&gt;
  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;null&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;getenv&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;ANDROID_ROOT&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)))&lt;/span&gt;
  &lt;span class=&#34;s&#34;&gt;&amp;#34;If non-nil, GNU Emacs is running on Termux.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;

&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;when&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;termux-p&lt;/span&gt;
  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;unless&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;package-installed-p&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;use-package&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
    &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;package-refresh-contents&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
    &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;package-install&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;use-package&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)))&lt;/span&gt;

&lt;span class=&#34;c1&#34;&gt;;; This makes Emacs in Termux use your Android browser for opening urls&lt;/span&gt;
&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;setq&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;browse-url-browser-function&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;browse-url-xdg-open&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;

&lt;span class=&#34;c1&#34;&gt;;; mouse&lt;/span&gt;
&lt;span class=&#34;c1&#34;&gt;;; enable mouse reporting for terminal emulators&lt;/span&gt;
&lt;span class=&#34;c1&#34;&gt;;; this lets you scroll around by swiping&lt;/span&gt;
&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;unless&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;window-system&lt;/span&gt;
  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;xterm-mouse-mode&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;global-set-key&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;mouse-4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;lambda&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
                              &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;interactive&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
                              &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;scroll-down&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)))&lt;/span&gt;
  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;global-set-key&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;mouse-5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;lambda&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
                              &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;interactive&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
                              &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;scroll-up&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))))&lt;/span&gt;

&lt;span class=&#34;c1&#34;&gt;;; ORG&lt;/span&gt;
&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;use-package&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;org&lt;/span&gt;
  &lt;span class=&#34;nb&#34;&gt;:ensure&lt;/span&gt; &lt;span class=&#34;no&#34;&gt;t&lt;/span&gt;
  &lt;span class=&#34;nb&#34;&gt;:ensure&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;org-plus-contrib&lt;/span&gt;
  &lt;span class=&#34;nb&#34;&gt;:init&lt;/span&gt;
  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;setq&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;org-src-fontify-natively&lt;/span&gt; &lt;span class=&#34;no&#34;&gt;t&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
  &lt;span class=&#34;nb&#34;&gt;:config&lt;/span&gt;
  &lt;span class=&#34;c1&#34;&gt;;; (add-to-list &amp;#39;auto-mode-alist &amp;#39;(&amp;#34;\\.org\\&amp;#39;&amp;#34; . org-mode))&lt;/span&gt;
  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;define-key&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;org-mode-map&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;kbd&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;M-p&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;org-metaup&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;define-key&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;org-mode-map&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;kbd&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;M-n&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;org-metadown&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;setq&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;org-catch-invisible-edits&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;show-and-error&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;setq&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;org-cycle-separator-lines&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;-1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;setq&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;org-return-follows-link&lt;/span&gt; &lt;span class=&#34;no&#34;&gt;t&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;setq&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;org-export-with-toc&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;nil&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;setq&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;org-startup-folded&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;content&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;setq&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;org-ellipsis&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;⇣&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
  &lt;span class=&#34;c1&#34;&gt;;; **** use regular android apps to view pdfs &amp;amp; images *****&lt;/span&gt;
  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;when&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;termux-p&lt;/span&gt;
    &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;add-to-list&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;org-file-apps&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;\\.pdf\\&amp;#39;&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;.&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;termux-open %s&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
    &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;add-to-list&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;org-file-apps&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;\\.png\\&amp;#39;&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;.&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;termux-open %s&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
    &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;add-to-list&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;org-file-apps&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;\\.jpg\\&amp;#39;&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;.&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;termux-open %s&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
    &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;add-to-list&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;org-file-apps&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;\\.jpeg\\&amp;#39;&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;.&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;termux-open %s&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)))&lt;/span&gt;
  &lt;span class=&#34;c1&#34;&gt;;; needed for &amp;lt;s etc. expansion of code-blocks&lt;/span&gt;
  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;require&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;org-tempo&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;

&lt;span class=&#34;c1&#34;&gt;;; define our Org-roam user and their email (set to your desired name/email)&lt;/span&gt;
&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;defvar&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;roam-user&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;Some User&amp;#34;&lt;/span&gt;
  &lt;span class=&#34;s&#34;&gt;&amp;#34;The name of the Org-roam note author.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;defvar&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;roam-email&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;roman@mode.org&amp;#34;&lt;/span&gt;
  &lt;span class=&#34;s&#34;&gt;&amp;#34;The public email of that author.&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;

&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;setq&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;org-roam-v2-ack&lt;/span&gt; &lt;span class=&#34;no&#34;&gt;t&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;

&lt;span class=&#34;c1&#34;&gt;;; we need this package for v2 of Org-oram&lt;/span&gt;
&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;use-package&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;emacsql-sqlite3&lt;/span&gt;
  &lt;span class=&#34;nb&#34;&gt;:ensure&lt;/span&gt; &lt;span class=&#34;no&#34;&gt;t&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;

&lt;span class=&#34;c1&#34;&gt;;; If you&amp;#39;ve replicated my setup; otherwise change to the Termux&lt;/span&gt;
&lt;span class=&#34;c1&#34;&gt;;; local path.&lt;/span&gt;
&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;setq&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;org-roam-directory&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;file-truename&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;~/Documents/Org/org-roam/&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;

&lt;span class=&#34;c1&#34;&gt;;; org-roam&lt;/span&gt;
&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;use-package&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;org-roam&lt;/span&gt;
  &lt;span class=&#34;nb&#34;&gt;:ensure&lt;/span&gt; &lt;span class=&#34;no&#34;&gt;t&lt;/span&gt;
  &lt;span class=&#34;nb&#34;&gt;:custom&lt;/span&gt;
  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;setq&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;org-roam-db-location&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;file-truename&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;~&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;org-roam-directory&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;file-truename&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;~/Documents/Org/org-roam/&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
  &lt;span class=&#34;nb&#34;&gt;:bind&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;C-c n l&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;.&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;org-roam-buffer-toggle&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
         &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;C-c n f&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;.&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;org-roam-node-find&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
         &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;C-c n r&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;.&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;org-roam-graph&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
         &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;C-c n i&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;.&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;org-roam-node-insert&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
         &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;C-c n c&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;.&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;org-roam-capture&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
         &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;C-c n g&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;.&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;org-id-get-create&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
         &lt;span class=&#34;c1&#34;&gt;;; Dailies&lt;/span&gt;
         &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;C-c n n&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;.&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;org-roam-dailies-capture-today&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
         &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;C-c n d&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;.&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;org-roam-dailies-goto-today&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;; find toDay&lt;/span&gt;
         &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;C-c n v&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;.&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;org-roam-dailies-goto-date&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
         &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;C-c n f&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;.&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;org-roam-dailies-goto-next-note&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
         &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;C-c n b&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;.&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;org-roam-dailies-goto-previous-note&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
  &lt;span class=&#34;nb&#34;&gt;:config&lt;/span&gt;

  &lt;span class=&#34;c1&#34;&gt;;; this is a chunglak&amp;#39;s hack to get sqlite to work on Android with org-roam v2:&lt;/span&gt;
  &lt;span class=&#34;c1&#34;&gt;;; from: https://github.com/org-roam/org-roam/issues/1605#issuecomment-885997237&lt;/span&gt;
  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;defun&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;org-roam-db&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
    &lt;span class=&#34;s&#34;&gt;&amp;#34;Entrypoint to the Org-roam sqlite database.
&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;Initializes and stores the database, and the database connection.
&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;Performs a database upgrade when required.&amp;#34;&lt;/span&gt;
    &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;unless&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;org-roam-db--get-connection&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
                 &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;emacsql-live-p&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;org-roam-db--get-connection&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)))&lt;/span&gt;
      &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;init-db&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;file-exists-p&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;org-roam-db-location&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))))&lt;/span&gt;
        &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;make-directory&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;file-name-directory&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;org-roam-db-location&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;no&#34;&gt;t&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
        &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;conn&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;emacsql-sqlite3&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;org-roam-db-location&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)))&lt;/span&gt;
          &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;emacsql&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;conn&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;:pragma&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;foreign_keys&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;ON&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)])&lt;/span&gt;
          &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;set-process-query-on-exit-flag&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;emacsql-process&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;conn&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;no&#34;&gt;nil&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
          &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;puthash&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;expand-file-name&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;org-roam-directory&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
                   &lt;span class=&#34;nv&#34;&gt;conn&lt;/span&gt;
                   &lt;span class=&#34;nv&#34;&gt;org-roam-db--connection&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
          &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;when&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;init-db&lt;/span&gt;
            &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;org-roam-db--init&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;conn&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
          &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;let*&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;version&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;caar&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;emacsql&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;conn&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;PRAGMA user_version&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)))&lt;/span&gt;
                 &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;version&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;org-roam-db--upgrade-maybe&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;conn&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;version&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)))&lt;/span&gt;
            &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;cond&lt;/span&gt;
             &lt;span class=&#34;p&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;version&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;org-roam-db-version&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
              &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;emacsql-close&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;conn&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
              &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;ne&#34;&gt;user-error&lt;/span&gt;
               &lt;span class=&#34;s&#34;&gt;&amp;#34;The Org-roam database was created with a newer Org-roam version.  &amp;#34;&lt;/span&gt;
               &lt;span class=&#34;s&#34;&gt;&amp;#34;You need to update the Org-roam package&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
             &lt;span class=&#34;p&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;version&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;org-roam-db-version&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
              &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;emacsql-close&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;conn&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
              &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;ne&#34;&gt;error&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;BUG: The Org-roam database scheme changed %s&amp;#34;&lt;/span&gt;
                     &lt;span class=&#34;s&#34;&gt;&amp;#34;and there is no upgrade path&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)))))))&lt;/span&gt;
    &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;org-roam-db--get-connection&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;defun&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;org-roam-db--init&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;db&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
    &lt;span class=&#34;s&#34;&gt;&amp;#34;Initialize database DB with the correct schema and user version.&amp;#34;&lt;/span&gt;
    &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;emacsql-with-transaction&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;db&lt;/span&gt;
      &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;emacsql&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;db&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;PRAGMA foreign_keys = ON&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;;; added&lt;/span&gt;
      &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;emacsql&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;db&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;:pragma&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;foreign_keys&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;ON&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)])&lt;/span&gt;
      &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;pcase-dolist&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;`&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;table&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;schema&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;org-roam-db--table-schemata&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
        &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;emacsql&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;db&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;:create-table&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$i1&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$S2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;table&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;schema&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
      &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;pcase-dolist&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;`&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;index-name&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;table&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;columns&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;org-roam-db--table-indices&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
        &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;emacsql&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;db&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;:create-index&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$i1&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;:on&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$i2&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$S3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;index-name&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;table&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;columns&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
      &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;emacsql&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;db&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;format&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;PRAGMA user_version = %s&amp;#34;&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;org-roam-db-version&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))))&lt;/span&gt;
  &lt;span class=&#34;c1&#34;&gt;;; end chunglak hack&lt;/span&gt;

  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;org-roam-setup&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
  &lt;span class=&#34;c1&#34;&gt;;; If using org-roam-protocol&lt;/span&gt;
  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;require&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;org-roam-protocol&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;

&lt;span class=&#34;c1&#34;&gt;;; These are my capture templates:&lt;/span&gt;
&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;setq&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;org-roam-capture-templates&lt;/span&gt;
      &lt;span class=&#34;o&#34;&gt;`&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;d&amp;#34;&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;default&amp;#34;&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;plain&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;%?&amp;#34;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;:if-new&lt;/span&gt;
         &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;file+head&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;%&amp;lt;%Y%m%d%H%M%S&amp;gt;-${slug}.org&amp;#34;&lt;/span&gt;
                    &lt;span class=&#34;o&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;concat&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;#+title: ${title}\n&amp;#34;&lt;/span&gt;
                             &lt;span class=&#34;s&#34;&gt;&amp;#34;#+date: %U\n\n&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
         &lt;span class=&#34;nb&#34;&gt;:unnarrowed&lt;/span&gt; &lt;span class=&#34;no&#34;&gt;t&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)))&lt;/span&gt;

&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;setq&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;org-roam-dailies-directory&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;~/Documents/Org/org-roam/daily&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;

&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;setq&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;org-roam-dailies-capture-templates&lt;/span&gt;
      &lt;span class=&#34;o&#34;&gt;`&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;d&amp;#34;&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;default&amp;#34;&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;entry&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;* %?&amp;#34;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;:if-new&lt;/span&gt;
         &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;file+head&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;%(concat org-roam-dailies-directory \&amp;#34;/%&amp;lt;%Y-%m-%d&amp;gt;.org\&amp;#34;)&amp;#34;&lt;/span&gt;
                    &lt;span class=&#34;o&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;concat&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;#+title: %&amp;lt;%Y-%m-%d&amp;gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;\n&amp;#34;&lt;/span&gt;
                             &lt;span class=&#34;s&#34;&gt;&amp;#34;#+filetags: :daily_journal:\n\n&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)))))&lt;/span&gt;

&lt;span class=&#34;c1&#34;&gt;;; deft - one way to search Org-roam notes, but not the fastest (see below)&lt;/span&gt;
&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;use-package&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;deft&lt;/span&gt;
  &lt;span class=&#34;nb&#34;&gt;:ensure&lt;/span&gt; &lt;span class=&#34;no&#34;&gt;t&lt;/span&gt;
  &lt;span class=&#34;nb&#34;&gt;:config&lt;/span&gt;
  &lt;span class=&#34;nb&#34;&gt;:after&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;org&lt;/span&gt;
  &lt;span class=&#34;nb&#34;&gt;:bind&lt;/span&gt;
  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;C-c r d&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;.&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;deft&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
  &lt;span class=&#34;nb&#34;&gt;:custom&lt;/span&gt;
  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;deft-recursive&lt;/span&gt; &lt;span class=&#34;no&#34;&gt;t&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;deft-use-filter-string-for-filename&lt;/span&gt; &lt;span class=&#34;no&#34;&gt;t&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;deft-default-extension&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;org&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;deft-directory&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;~/Documents/Org/org-roam/&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;

&lt;span class=&#34;c1&#34;&gt;;; Here end the basic setup, but....&lt;/span&gt;

&lt;span class=&#34;c1&#34;&gt;;; SOME OTHER THINGS YOU MIGHT ADD&lt;/span&gt;

&lt;span class=&#34;c1&#34;&gt;;; bars seems pointless here, but if you like, don&amp;#39;t do this&lt;/span&gt;
&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;menu-bar-mode&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;-1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;tool-bar-mode&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;-1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;

&lt;span class=&#34;c1&#34;&gt;;; You could use a different theme&lt;/span&gt;
&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;use-package&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;cyberpunk-theme&lt;/span&gt;
  &lt;span class=&#34;nb&#34;&gt;:ensure&lt;/span&gt; &lt;span class=&#34;no&#34;&gt;t&lt;/span&gt;
  &lt;span class=&#34;nb&#34;&gt;:config&lt;/span&gt;
  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;load-theme&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;cyberpunk&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;

&lt;span class=&#34;c1&#34;&gt;;;;;;;;;;;;;;;;;;;;;;&lt;/span&gt;
&lt;span class=&#34;c1&#34;&gt;;; Spell-checking ;;;&lt;/span&gt;
&lt;span class=&#34;c1&#34;&gt;;;;;;;;;;;;;;;;;;;;;;&lt;/span&gt;
&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;require&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;flymake&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;setq&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;ispell-program-name&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;hunspell&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;; could be ispell as well, depending on your preferences&lt;/span&gt;
&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;setq&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;ispell-dictionary&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;en_GB&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;; this can obviously be set to any language your spell-checking program supports&lt;/span&gt;
&lt;span class=&#34;c1&#34;&gt;;; I installed the en_GB ones, but these don&amp;#39;t come in Termux by default. To add arbitrary hunspell languages, see:&lt;/span&gt;
&lt;span class=&#34;c1&#34;&gt;;; https://www.reddit.com/r/termux/comments/k5o6mp/new_hunspell_dictionaries/?&lt;/span&gt;
&lt;span class=&#34;c1&#34;&gt;;; in summary:&lt;/span&gt;
&lt;span class=&#34;c1&#34;&gt;;; - how to add new: copy .aff and .dic files in /data/data/com.termux/files/usr/share/hunspell/&lt;/span&gt;
&lt;span class=&#34;c1&#34;&gt;;; - where to get new: https://www.freeoffice.com/en/download/dictionaries&lt;/span&gt;

&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;dolist&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;hook&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;org-mode-hook&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;add-hook&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;hook&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;lambda&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;flyspell-mode&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))))&lt;/span&gt;
&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;add-hook&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;org-mode-hook&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;lambda&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;setq&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;ispell-parser&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;tex&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)))&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;; make orgmode recognise LaTeX syntax [from http://stackoverflow.com/questions/11646880/flyspell-in-org-mode-recognize-latex-syntax-like-auctex ]&lt;/span&gt;
&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;add-hook&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;text-mode-hook&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;#&amp;#39;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;flyspell-mode&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;

&lt;span class=&#34;c1&#34;&gt;;;;;;;;;;;;;;;;&lt;/span&gt;
&lt;span class=&#34;c1&#34;&gt;;; Undo-Tree ;; - a new undo package&lt;/span&gt;
&lt;span class=&#34;c1&#34;&gt;;;;;;;;;;;;;;;;&lt;/span&gt;
&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;use-package&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;undo-tree&lt;/span&gt;
  &lt;span class=&#34;nb&#34;&gt;:ensure&lt;/span&gt; &lt;span class=&#34;no&#34;&gt;t&lt;/span&gt;
  &lt;span class=&#34;nb&#34;&gt;:config&lt;/span&gt;
  &lt;span class=&#34;c1&#34;&gt;;; (setq undo-tree-auto-save-history 1)&lt;/span&gt;
  &lt;span class=&#34;c1&#34;&gt;;; Each node in the undo tree should have a timestamp.&lt;/span&gt;
  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;setq&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;undo-tree-visualizer-timestamps&lt;/span&gt; &lt;span class=&#34;no&#34;&gt;t&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
  &lt;span class=&#34;c1&#34;&gt;;; Show a diff window displaying changes between undo nodes.&lt;/span&gt;
  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;setq&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;undo-tree-visualizer-diff&lt;/span&gt; &lt;span class=&#34;no&#34;&gt;t&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;global-undo-tree-mode&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;

&lt;span class=&#34;c1&#34;&gt;;; display time and date in modeline, if you like&lt;/span&gt;
&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;setq&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;display-time-day-and-date&lt;/span&gt; &lt;span class=&#34;no&#34;&gt;t&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;display-time-mode&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;

&lt;span class=&#34;c1&#34;&gt;;; prettier bullets&lt;/span&gt;
&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;use-package&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;org-bullets&lt;/span&gt;
  &lt;span class=&#34;nb&#34;&gt;:ensure&lt;/span&gt; &lt;span class=&#34;no&#34;&gt;t&lt;/span&gt;
  &lt;span class=&#34;nb&#34;&gt;:config&lt;/span&gt;
  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;add-hook&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;org-mode-hook&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;lambda&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;org-bullets-mode&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)))&lt;/span&gt;
  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;setq&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;org-bullets-bullet-list&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;⋇&amp;#34;&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;∴&amp;#34;&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;∵&amp;#34;&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;∷&amp;#34;&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;∺&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)))&lt;/span&gt;

&lt;span class=&#34;c1&#34;&gt;;; A nice way of quickly adding links.&lt;/span&gt;
&lt;span class=&#34;c1&#34;&gt;;; (Though in Termux, you first must paste from your&lt;/span&gt;
&lt;span class=&#34;c1&#34;&gt;;; Android clipboard and then copy/kill via Emacs before&lt;/span&gt;
&lt;span class=&#34;c1&#34;&gt;;; it&amp;#39;ll work.)&lt;/span&gt;
&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;use-package&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;org-cliplink&lt;/span&gt;
  &lt;span class=&#34;nb&#34;&gt;:ensure&lt;/span&gt; &lt;span class=&#34;no&#34;&gt;t&lt;/span&gt;
  &lt;span class=&#34;nb&#34;&gt;:config&lt;/span&gt;
  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;define-key&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;org-mode-map&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;kbd&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;C-c o c&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;#&amp;#39;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;org-cliplink&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;

&lt;span class=&#34;c1&#34;&gt;;; This is also not needed, but adds some (dubiously) useful properties&lt;/span&gt;
&lt;span class=&#34;c1&#34;&gt;;; to the Org-roam file&amp;#39;s property drawer.&lt;/span&gt;

&lt;span class=&#34;c1&#34;&gt;;; First, set up a system for getting location&lt;/span&gt;
&lt;span class=&#34;c1&#34;&gt;;; (we could also try to leverage termux&amp;#39;s built-in&lt;/span&gt;
&lt;span class=&#34;c1&#34;&gt;;; GPS location abilities via `termux-location`, but&lt;/span&gt;
&lt;span class=&#34;c1&#34;&gt;;; it seems a bit slow and doesn&amp;#39;t even always work if&lt;/span&gt;
&lt;span class=&#34;c1&#34;&gt;;; your device can&amp;#39;t get a good satellite connection.)&lt;/span&gt;
&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;setq&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;calendar-latitude&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;setq&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;calendar-longitude&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;defun&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;bms/get-lat-long-from-ipinfo&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;let*&lt;/span&gt;
      &lt;span class=&#34;p&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;latlong&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;substring&lt;/span&gt;
                 &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;shell-command-to-string&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;curl -s &amp;#39;ipinfo.io/loc&amp;#39;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;-1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
       &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;latlong-list&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;split-string&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;latlong&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;,&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)))&lt;/span&gt;
    &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;setq&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;calendar-latitude&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;string-to-number&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;car&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;latlong-list&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)))&lt;/span&gt;
    &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;setq&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;calendar-longitude&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;string-to-number&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;cadr&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;latlong-list&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)))))&lt;/span&gt;

&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;defun&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;bms/add-other-auto-props-to-org-roam-properties&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;unless&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;file-exists-p&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;buffer-file-name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
    &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;unless&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;org-find-property&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;CREATION_TIME&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
      &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;org-roam-add-property&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;format-time-string&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;%s&amp;#34;&lt;/span&gt;
                                                 &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;nth&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;
                                                      &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;file-attributes&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;buffer-file-name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))))&lt;/span&gt;
                             &lt;span class=&#34;s&#34;&gt;&amp;#34;CREATION_TIME&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
    &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;unless&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;org-find-property&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;AUTHOR&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
      &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;org-roam-add-property&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;roam-user&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;AUTHOR&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
    &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;unless&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;org-find-property&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;MAIL&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
      &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;org-roam-add-property&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;roam-email&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;MAIL&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
    &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;unless&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;org-find-property&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;LAT_LONG&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
      &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;bms/get-lat-long-from-ipinfo&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
      &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;org-roam-add-property&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;concat&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;number-to-string&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;calendar-latitude&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;,&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;number-to-string&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;calendar-longitude&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;LAT-LONG&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))))&lt;/span&gt;

&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;add-hook&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;org-roam-capture-new-node-hook&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;#&amp;#39;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;bms/add-other-auto-props-to-org-roam-properties&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;

&lt;span class=&#34;c1&#34;&gt;;; You could use Ivy or Helm or the default, but I&lt;/span&gt;
&lt;span class=&#34;c1&#34;&gt;;; like Selectrum, Consult &amp;amp; friends. Plus we can leverage&lt;/span&gt;
&lt;span class=&#34;c1&#34;&gt;;; Consult for a nice alternative to deft for note-searching.&lt;/span&gt;
&lt;span class=&#34;c1&#34;&gt;;; You&amp;#39;ll need this to use my ripgrep note searching feature below.&lt;/span&gt;

&lt;span class=&#34;c1&#34;&gt;;; selectrum&lt;/span&gt;
&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;use-package&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;selectrum&lt;/span&gt;
  &lt;span class=&#34;nb&#34;&gt;:ensure&lt;/span&gt; &lt;span class=&#34;no&#34;&gt;t&lt;/span&gt;
  &lt;span class=&#34;nb&#34;&gt;:config&lt;/span&gt;
  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;selectrum-mode&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;+1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;

&lt;span class=&#34;c1&#34;&gt;;; ;; prescient  - T9&lt;/span&gt;
&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;use-package&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;prescient&lt;/span&gt;
  &lt;span class=&#34;nb&#34;&gt;:ensure&lt;/span&gt; &lt;span class=&#34;no&#34;&gt;t&lt;/span&gt;
  &lt;span class=&#34;nb&#34;&gt;:config&lt;/span&gt;
  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;setq&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;prescient-persist-mode&lt;/span&gt; &lt;span class=&#34;no&#34;&gt;t&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;setq&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;prescient-filter-method&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;literal&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;regexp&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;initialism&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;fuzzy&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)))&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;;; added fuzzy&lt;/span&gt;

&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;use-package&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;orderless&lt;/span&gt;
  &lt;span class=&#34;nb&#34;&gt;:ensure&lt;/span&gt; &lt;span class=&#34;no&#34;&gt;t&lt;/span&gt;
  &lt;span class=&#34;nb&#34;&gt;:init&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;icomplete-mode&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;                &lt;span class=&#34;c1&#34;&gt;; optional but recommended!&lt;/span&gt;
  &lt;span class=&#34;nb&#34;&gt;:custom&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;completion-styles&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;orderless&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
  &lt;span class=&#34;nb&#34;&gt;:config&lt;/span&gt;
  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;setq&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;orderless-matching-styles&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;orderless-flex&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
  &lt;span class=&#34;c1&#34;&gt;;; This means that the company-capf backend will automatically use orderless, but following issue exists:&lt;/span&gt;
  &lt;span class=&#34;c1&#34;&gt;;; Pressing SPC takes you out of completion, so with the default separator you are limited to one component,&lt;/span&gt;
  &lt;span class=&#34;c1&#34;&gt;;; which is no fun. To fix this add a separator that is allowed to occur in identifiers, for example, for&lt;/span&gt;
  &lt;span class=&#34;c1&#34;&gt;;; Emacs Lisp code you could use an ampersand:&lt;/span&gt;
  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;setq&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;orderless-component-separator&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;[ &amp;amp;]&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;

  &lt;span class=&#34;c1&#34;&gt;;; The matching portions of candidates aren’t highlighted. But while you can’t get different faces for&lt;/span&gt;
  &lt;span class=&#34;c1&#34;&gt;;; different components, you can at least get the matches highlighted in the sole available face with this configuration&lt;/span&gt;
  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;defun&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;just-one-face&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;fn&lt;/span&gt; &lt;span class=&#34;kp&#34;&gt;&amp;amp;rest&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;args&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
    &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;orderless-match-faces&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;completions-common-part&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]))&lt;/span&gt;
      &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;apply&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;fn&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;args&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)))&lt;/span&gt;

  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;advice-add&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;company-capf--candidates&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;:around&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;#&amp;#39;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;just-one-face&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;

&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;use-package&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;selectrum-prescient&lt;/span&gt;
  &lt;span class=&#34;nb&#34;&gt;:ensure&lt;/span&gt; &lt;span class=&#34;no&#34;&gt;t&lt;/span&gt;
  &lt;span class=&#34;nb&#34;&gt;:config&lt;/span&gt;
  &lt;span class=&#34;c1&#34;&gt;;; to make sorting and filtering more intelligent&lt;/span&gt;
  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;selectrum-prescient-mode&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;+1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;

  &lt;span class=&#34;c1&#34;&gt;;; Filtering with orderless&lt;/span&gt;
  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;setq&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;selectrum-refine-candidates-function&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;#&amp;#39;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;orderless-filter&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;setq&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;selectrum-highlight-candidates-function&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;#&amp;#39;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;orderless-highlight-matches&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;

  &lt;span class=&#34;c1&#34;&gt;;; If you also configure `completion-styles` for orderless you might want to use the&lt;/span&gt;
  &lt;span class=&#34;c1&#34;&gt;;; following advice because orderless isn&amp;#39;t well suited for initial gathering of&lt;/span&gt;
  &lt;span class=&#34;c1&#34;&gt;;; candidates by completion in region.&lt;/span&gt;
  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;advice-add&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;#&amp;#39;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;completion--category-override&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;:filter-return&lt;/span&gt;
              &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;defun&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;completion-in-region-style-setup+&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;res&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
                &lt;span class=&#34;s&#34;&gt;&amp;#34;Fallback to default styles for region completions with orderless.&amp;#34;&lt;/span&gt;
                &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;or&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;res&lt;/span&gt;
                    &lt;span class=&#34;c1&#34;&gt;;; Don&amp;#39;t use orderless for initial candidate gathering.&lt;/span&gt;
                    &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;completion-in-region-mode-predicate&lt;/span&gt;
                         &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;minibufferp&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
                         &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;equal&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;orderless&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;completion-styles&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
                         &lt;span class=&#34;o&#34;&gt;&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;basic&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;partial-completion&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;emacs22&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)))))&lt;/span&gt;

  &lt;span class=&#34;c1&#34;&gt;;; Minibuffer-actions with embark&lt;/span&gt;

  &lt;span class=&#34;c1&#34;&gt;;; You should bind embark commands like embark-act, embark-act-noexit&lt;/span&gt;
  &lt;span class=&#34;c1&#34;&gt;;; and embark-export in minibuffer-local-map (as embark commands are not selectrum specific).&lt;/span&gt;
  &lt;span class=&#34;c1&#34;&gt;;; For available commands and other embark configurations see the embark documentation and its wiki.&lt;/span&gt;

  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;defun&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;current-candidate+category&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
    &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;when&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;selectrum-is-active&lt;/span&gt;
      &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;cons&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;selectrum--get-meta&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;category&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
            &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;selectrum-get-current-candidate&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))))&lt;/span&gt;

  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;add-hook&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;embark-target-finders&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;#&amp;#39;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;current-candidate+category&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;

  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;defun&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;current-candidates+category&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
    &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;when&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;selectrum-is-active&lt;/span&gt;
      &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;cons&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;selectrum--get-meta&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;category&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
            &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;selectrum-get-current-candidates&lt;/span&gt;
             &lt;span class=&#34;c1&#34;&gt;;; Pass relative file names for dired.&lt;/span&gt;
             &lt;span class=&#34;nv&#34;&gt;minibuffer-completing-file-name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))))&lt;/span&gt;

  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;add-hook&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;embark-candidate-collectors&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;#&amp;#39;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;current-candidates+category&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
  &lt;span class=&#34;c1&#34;&gt;;; No unnecessary computation delay after injection.&lt;/span&gt;
  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;add-hook&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;embark-setup-hook&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;selectrum-set-selected-candidate&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;

  &lt;span class=&#34;c1&#34;&gt;;; The following is not selectrum specific but included here for convenience.&lt;/span&gt;
  &lt;span class=&#34;c1&#34;&gt;;; If you don&amp;#39;t want to use which-key as a key prompter skip the following code.&lt;/span&gt;

  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;setq&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;embark-action-indicator&lt;/span&gt;
        &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;lambda&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;map&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;which-key--show-keymap&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;Embark&amp;#34;&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;map&lt;/span&gt; &lt;span class=&#34;no&#34;&gt;nil&lt;/span&gt; &lt;span class=&#34;no&#34;&gt;nil&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;no-paging&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
          &lt;span class=&#34;nf&#34;&gt;#&amp;#39;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;which-key--hide-popup-ignore-command&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
        &lt;span class=&#34;nv&#34;&gt;embark-become-indicator&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;embark-action-indicator&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;

  &lt;span class=&#34;c1&#34;&gt;;; to save your command history on disk, so the sorting gets more&lt;/span&gt;
  &lt;span class=&#34;c1&#34;&gt;;; intelligent over time&lt;/span&gt;
  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;prescient-persist-mode&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;+1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;

&lt;span class=&#34;c1&#34;&gt;;; Example configuration for Consult&lt;/span&gt;
&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;use-package&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;consult&lt;/span&gt;
  &lt;span class=&#34;c1&#34;&gt;;; Replace bindings. Lazily loaded due by `use-package&amp;#39;.&lt;/span&gt;
  &lt;span class=&#34;nb&#34;&gt;:bind&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;C-x M-:&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;.&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;consult-complex-command&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
         &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;C-c h&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;.&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;consult-history&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
         &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;C-c m&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;.&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;consult-mode-command&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
         &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;C-x b&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;.&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;consult-buffer&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
         &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;C-x 4 b&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;.&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;consult-buffer-other-window&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
         &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;C-x 5 b&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;.&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;consult-buffer-other-frame&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
         &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;C-x r x&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;.&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;consult-register&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
         &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;C-x r b&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;.&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;consult-bookmark&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
         &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;M-g g&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;.&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;consult-goto-line&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
         &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;M-g M-g&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;.&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;consult-goto-line&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
         &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;M-g o&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;.&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;consult-outline&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;       &lt;span class=&#34;c1&#34;&gt;;; &amp;#34;M-s o&amp;#34; is a good alternative.&lt;/span&gt;
         &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;M-g l&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;.&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;consult-line&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;          &lt;span class=&#34;c1&#34;&gt;;; &amp;#34;M-s l&amp;#34; is a good alternative.&lt;/span&gt;
         &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;M-g m&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;.&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;consult-mark&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;          &lt;span class=&#34;c1&#34;&gt;;; I recommend to bind Consult navigation&lt;/span&gt;
         &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;M-g k&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;.&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;consult-global-mark&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;   &lt;span class=&#34;c1&#34;&gt;;; commands under the &amp;#34;M-g&amp;#34; prefix.&lt;/span&gt;
         &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;M-g r&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;.&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;consult-ripgrep&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;      &lt;span class=&#34;c1&#34;&gt;;; or consult-grep, consult-ripgrep&lt;/span&gt;
         &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;M-g f&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;.&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;consult-find&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;          &lt;span class=&#34;c1&#34;&gt;;; or consult-locate, my-fdfind&lt;/span&gt;
         &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;M-g i&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;.&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;consult-project-imenu&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;;; or consult-imenu&lt;/span&gt;
         &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;M-g e&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;.&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;consult-error&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
         &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;M-s m&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;.&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;consult-multi-occur&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
         &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;M-y&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;.&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;consult-yank-pop&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
         &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;&amp;lt;help&amp;gt; a&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;.&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;consult-apropos&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;

  &lt;span class=&#34;c1&#34;&gt;;; The :init configuration is always executed (Not lazy!)&lt;/span&gt;
  &lt;span class=&#34;nb&#34;&gt;:init&lt;/span&gt;

  &lt;span class=&#34;c1&#34;&gt;;; Custom command wrappers. It is generally encouraged to write your own&lt;/span&gt;
  &lt;span class=&#34;c1&#34;&gt;;; commands based on the Consult commands. Some commands have arguments which&lt;/span&gt;
  &lt;span class=&#34;c1&#34;&gt;;; allow tweaking. Furthermore global configuration variables can be set&lt;/span&gt;
  &lt;span class=&#34;c1&#34;&gt;;; locally in a let-binding.&lt;/span&gt;
  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;defun&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;my-fdfind&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kp&#34;&gt;&amp;amp;optional&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;dir&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
    &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;interactive&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;P&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
    &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;consult-find-command&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;fdfind&amp;#34;&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;--color=never&amp;#34;&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;--full-path&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)))&lt;/span&gt;
      &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;consult-find&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;dir&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)))&lt;/span&gt;

  &lt;span class=&#34;c1&#34;&gt;;; Replace `multi-occur&amp;#39; with `consult-multi-occur&amp;#39;, which is a drop-in replacement.&lt;/span&gt;
  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;fset&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;multi-occur&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;#&amp;#39;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;consult-multi-occur&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;

  &lt;span class=&#34;c1&#34;&gt;;; Configure other variables and modes in the :config section, after lazily loading the package&lt;/span&gt;
  &lt;span class=&#34;nb&#34;&gt;:config&lt;/span&gt;

  &lt;span class=&#34;c1&#34;&gt;;; Configure preview. Note that the preview-key can also be configured on a&lt;/span&gt;
  &lt;span class=&#34;c1&#34;&gt;;; per-command basis via `consult-config&amp;#39;.&lt;/span&gt;
  &lt;span class=&#34;c1&#34;&gt;;; (setq consult-preview-key &amp;#39;any) ;; any key triggers preview, the default&lt;/span&gt;

  &lt;span class=&#34;c1&#34;&gt;;; Optionally configure narrowing key.&lt;/span&gt;
  &lt;span class=&#34;c1&#34;&gt;;; Both &amp;lt; and C-+ work reasonably well.&lt;/span&gt;
  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;setq&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;consult-narrow-key&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;&amp;lt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;;; (kbd &amp;#34;C-+&amp;#34;)&lt;/span&gt;
  &lt;span class=&#34;c1&#34;&gt;;; Optionally make narrowing help available in the minibuffer.&lt;/span&gt;
  &lt;span class=&#34;c1&#34;&gt;;; Probably not needed if you are using which-key.&lt;/span&gt;
  &lt;span class=&#34;c1&#34;&gt;;; (define-key consult-narrow-map (vconcat consult-narrow-key &amp;#34;?&amp;#34;) #&amp;#39;consult-narrow-help)&lt;/span&gt;

  &lt;span class=&#34;c1&#34;&gt;;; Optional configure a view library to be used by `consult-buffer&amp;#39;.&lt;/span&gt;
  &lt;span class=&#34;c1&#34;&gt;;; The view library must provide two functions, one to open the view by name,&lt;/span&gt;
  &lt;span class=&#34;c1&#34;&gt;;; and one function which must return a list of views as strings.&lt;/span&gt;
  &lt;span class=&#34;c1&#34;&gt;;; Example: https://github.com/minad/bookmark-view/&lt;/span&gt;
  &lt;span class=&#34;c1&#34;&gt;;; (setq consult-view-open-function #&amp;#39;bookmark-jump&lt;/span&gt;
  &lt;span class=&#34;c1&#34;&gt;;;       consult-view-list-function #&amp;#39;bookmark-view-names)&lt;/span&gt;

  &lt;span class=&#34;c1&#34;&gt;;; Optionally configure a function which returns the project root directory&lt;/span&gt;
  &lt;span class=&#34;c1&#34;&gt;;; (autoload &amp;#39;projectile-project-root &amp;#34;projectile&amp;#34;)&lt;/span&gt;
  &lt;span class=&#34;c1&#34;&gt;;; (setq consult-project-root-function #&amp;#39;projectile-project-root)&lt;/span&gt;
  &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;

&lt;span class=&#34;c1&#34;&gt;;; Optionally add the `consult-flycheck&amp;#39; command.&lt;/span&gt;
&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;use-package&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;consult-flycheck&lt;/span&gt;
  &lt;span class=&#34;nb&#34;&gt;:bind&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;:map&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;flycheck-command-map&lt;/span&gt;
              &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;!&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;.&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;consult-flycheck&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)))&lt;/span&gt;

&lt;span class=&#34;c1&#34;&gt;;; Optionally enable richer annotations using the Marginalia package&lt;/span&gt;
&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;use-package&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;marginalia&lt;/span&gt;
  &lt;span class=&#34;nb&#34;&gt;:ensure&lt;/span&gt; &lt;span class=&#34;no&#34;&gt;t&lt;/span&gt;
  &lt;span class=&#34;c1&#34;&gt;;; The :init configuration is always executed (Not lazy!)&lt;/span&gt;
  &lt;span class=&#34;nb&#34;&gt;:init&lt;/span&gt;
  &lt;span class=&#34;c1&#34;&gt;;; Must be in the :init section of use-package such that the mode gets&lt;/span&gt;
  &lt;span class=&#34;c1&#34;&gt;;; enabled right away. Note that this forces loading the package.&lt;/span&gt;
  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;marginalia-mode&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;

&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;use-package&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;embark&lt;/span&gt;
  &lt;span class=&#34;nb&#34;&gt;:ensure&lt;/span&gt; &lt;span class=&#34;no&#34;&gt;t&lt;/span&gt;
  &lt;span class=&#34;nb&#34;&gt;:bind&lt;/span&gt;
  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;C-S-a&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;.&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;embark-act&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;               &lt;span class=&#34;c1&#34;&gt;; pick some comfortable binding&lt;/span&gt;
  &lt;span class=&#34;nb&#34;&gt;:config&lt;/span&gt;
  &lt;span class=&#34;c1&#34;&gt;;; For Selectrum users:&lt;/span&gt;
  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;defun&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;current-candidate+category&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
    &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;when&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;selectrum-is-active&lt;/span&gt;
      &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;cons&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;selectrum--get-meta&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;category&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
            &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;selectrum-get-current-candidate&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))))&lt;/span&gt;

  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;add-hook&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;embark-target-finders&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;#&amp;#39;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;current-candidate+category&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;

  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;defun&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;current-candidates+category&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
    &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;when&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;selectrum-is-active&lt;/span&gt;
      &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;cons&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;selectrum--get-meta&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;category&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
            &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;selectrum-get-current-candidates&lt;/span&gt;
             &lt;span class=&#34;c1&#34;&gt;;; Pass relative file names for dired.&lt;/span&gt;
             &lt;span class=&#34;nv&#34;&gt;minibuffer-completing-file-name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))))&lt;/span&gt;

  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;add-hook&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;embark-candidate-collectors&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;#&amp;#39;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;current-candidates+category&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;

  &lt;span class=&#34;c1&#34;&gt;;; No unnecessary computation delay after injection.&lt;/span&gt;
  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;add-hook&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;embark-setup-hook&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;selectrum-set-selected-candidate&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;

&lt;span class=&#34;c1&#34;&gt;;; org-roam-rg-search - this is a much faster way to search Org-roam notes:&lt;/span&gt;
&lt;span class=&#34;c1&#34;&gt;;; requires the Selectrum+Consult setup immediately preceding.&lt;/span&gt;
&lt;span class=&#34;c1&#34;&gt;;; Use C-c r r to search notes via consult&amp;#39;s ripgrep interface&lt;/span&gt;
&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;defun&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;bms/org-roam-rg-search&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
  &lt;span class=&#34;s&#34;&gt;&amp;#34;Search org-roam directory using consult-ripgrep. With live-preview.&amp;#34;&lt;/span&gt;
  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;interactive&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;consult-ripgrep&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;rg --null --ignore-case --type org --line-buffered --color=always --max-columns=500 --no-heading --line-number . -e ARG OPTS&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
    &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;consult-ripgrep&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;org-roam-directory&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)))&lt;/span&gt;

&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;global-set-key&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;kbd&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;C-c rr&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;bms/org-roam-rg-search&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;

&lt;span class=&#34;c1&#34;&gt;;; speed-keys - see https://github.com/alhassy/emacs.d#manipulating-sections&lt;/span&gt;
&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;setq&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;org-use-speed-commands&lt;/span&gt; &lt;span class=&#34;no&#34;&gt;t&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;

&lt;span class=&#34;c1&#34;&gt;;; On an org-heading, C-a goes to after the star, heading markers. To use speed keys, run C-a C-a to get to the star markers.&lt;/span&gt;
&lt;span class=&#34;c1&#34;&gt;;; C-e goes to the end of the heading, not including the tags.&lt;/span&gt;
&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;setq&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;org-special-ctrl-a/e&lt;/span&gt; &lt;span class=&#34;no&#34;&gt;t&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;

&lt;span class=&#34;c1&#34;&gt;;;drag images into orgmode&lt;/span&gt;
&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;use-package&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;org-download&lt;/span&gt;
  &lt;span class=&#34;nb&#34;&gt;:ensure&lt;/span&gt; &lt;span class=&#34;no&#34;&gt;t&lt;/span&gt;
  &lt;span class=&#34;nb&#34;&gt;:config&lt;/span&gt;
  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;add-hook&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;dired-mode-hook&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;org-download-enable&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;global-set-key&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;kbd&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;C-c o i&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;#&amp;#39;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;org-download-yank&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;setq&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;org-download-method&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;attach&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;

&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;defun&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;bms/org-attach-insert-link&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kp&#34;&gt;&amp;amp;optional&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;in-emacs&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
  &lt;span class=&#34;s&#34;&gt;&amp;#34;Insert attachment from list.&amp;#34;&lt;/span&gt;
  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;interactive&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;P&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;attach-dir&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;org-attach-dir&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)))&lt;/span&gt;
    &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;attach-dir&lt;/span&gt;
        &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;let*&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;file&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;pcase&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;org-attach-file-list&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;attach-dir&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
                       &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;`&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;file&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;file&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
                       &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;files&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;completing-read&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;Insert attachment: &amp;#34;&lt;/span&gt;
                                               &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;mapcar&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;#&amp;#39;list&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;files&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;no&#34;&gt;nil&lt;/span&gt; &lt;span class=&#34;no&#34;&gt;t&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))))&lt;/span&gt;
               &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;path&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;expand-file-name&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;file&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;attach-dir&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
               &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;desc&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;file-name-nondirectory&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;path&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)))&lt;/span&gt;
          &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;initial-input&lt;/span&gt;
                 &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;cond&lt;/span&gt;
                  &lt;span class=&#34;p&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;org-link-make-description-function&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;desc&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
                  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;no&#34;&gt;t&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;condition-case&lt;/span&gt; &lt;span class=&#34;no&#34;&gt;nil&lt;/span&gt;
                         &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;funcall&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;org-link-make-description-function&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;link&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;desc&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
                       &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;ne&#34;&gt;error&lt;/span&gt;
                        &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;message&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;Can&amp;#39;t get link description from %S&amp;#34;&lt;/span&gt;
                                 &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;symbol-name&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;org-link-make-description-function&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
                        &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;sit-for&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
                        &lt;span class=&#34;no&#34;&gt;nil&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))))))&lt;/span&gt;
            &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;setq&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;desc&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;called-interactively-p&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;any&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
                           &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;read-string&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;Description: &amp;#34;&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;initial-input&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
                         &lt;span class=&#34;nv&#34;&gt;initial-input&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
            &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;org-insert-link&lt;/span&gt; &lt;span class=&#34;no&#34;&gt;nil&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;path&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;concat&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;attachment:&amp;#34;&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;desc&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))))&lt;/span&gt;
      &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;ne&#34;&gt;error&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;No attachment directory exist&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))))&lt;/span&gt;
&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;define-key&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;org-mode-map&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;kbd&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;C-c o l&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;#&amp;#39;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;bms/org-attach-insert-link&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;

&lt;span class=&#34;c1&#34;&gt;;; in case you want some things not in melpa&lt;/span&gt;
&lt;span class=&#34;c1&#34;&gt;;; you&amp;#39;ll need it for the remaining things below&lt;/span&gt;
&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;use-package&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;quelpa&lt;/span&gt;
  &lt;span class=&#34;nb&#34;&gt;:ensure&lt;/span&gt; &lt;span class=&#34;no&#34;&gt;t&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;

&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;use-package&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;quelpa-use-package&lt;/span&gt;
  &lt;span class=&#34;nb&#34;&gt;:ensure&lt;/span&gt; &lt;span class=&#34;no&#34;&gt;t&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;

&lt;span class=&#34;c1&#34;&gt;;; A bit of sugar for the visual appearance of Org syntax&lt;/span&gt;
&lt;span class=&#34;c1&#34;&gt;;; Use if you like.&lt;/span&gt;
&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;use-package&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;org-appear&lt;/span&gt;
  &lt;span class=&#34;nb&#34;&gt;:ensure&lt;/span&gt; &lt;span class=&#34;no&#34;&gt;t&lt;/span&gt;
  &lt;span class=&#34;nb&#34;&gt;:quelpa&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;org-appear&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;:fetcher&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;github&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;:repo&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;awth13/org-appear&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
  &lt;span class=&#34;nb&#34;&gt;:config&lt;/span&gt;
  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;setq&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;org-hide-emphasis-markers&lt;/span&gt; &lt;span class=&#34;no&#34;&gt;t&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
  &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;add-hook&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;org-mode-hook&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;&amp;#39;org-appear-mode&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;

&lt;span class=&#34;c1&#34;&gt;;; You don&amp;#39;t need this, but it&amp;#39;s cool and it does work on Android:&lt;/span&gt;
&lt;span class=&#34;c1&#34;&gt;;; see https://github.com/org-roam/org-roam-ui for features&lt;/span&gt;
&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;use-package&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;org-roam-ui&lt;/span&gt;
  &lt;span class=&#34;nb&#34;&gt;:ensure&lt;/span&gt; &lt;span class=&#34;no&#34;&gt;t&lt;/span&gt;
  &lt;span class=&#34;nb&#34;&gt;:quelpa&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;org-roam-ui&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;:fetcher&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;github&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;:repo&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;org-roam/org-roam-ui&amp;#34;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;:branch&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;main&amp;#34;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;:files&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;*.el&amp;#34;&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;out&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
  &lt;span class=&#34;nb&#34;&gt;:after&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;org-roam&lt;/span&gt;
  &lt;span class=&#34;nb&#34;&gt;:hook&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;org-roam&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;.&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;org-roam-ui-mode&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;An excellent way of keeping Org notes (and files more generally) in
sync between desktop, laptop, and mobile devices is &lt;a href=&#34;https://syncthing.net/&#34;&gt;Syncthing&lt;/a&gt;. On
Android I recommend using the &lt;a href=&#34;https://f-droid.org/en/packages/com.github.catfriend1.syncthingandroid/&#34;&gt;Syncthing-Fork&lt;/a&gt; app (via F-Droid), which has various improvements over the default Syncthing app on Android, including better file-access features. (On iOS there is now a third-party solution for syncing via Syncthing: &lt;a href=&#34;https://www.mobiussync.com/&#34;&gt;Möbius-Sync&lt;/a&gt;. I have no idea how to use Emacs/Org-mode on iOS though, but I recall hearing about some ways of running a Linux shell on iOS like &lt;a href=&#34;https://ish.app/&#34;&gt;iSH&lt;/a&gt;, so possibly there&amp;rsquo;s some way.)&lt;/p&gt;
&lt;p&gt;I have Syncthing sync my Org files to a directory in my main &amp;ldquo;home&amp;rdquo;
directory on Android &lt;code&gt;Documents/Org&lt;/code&gt; and then in Termux created a
&lt;code&gt;Documents&lt;/code&gt; directory and inside of that directory created a symlink to
my actual Org directory via &lt;code&gt;ln -s storage/shared/Documents/Org Org&lt;/code&gt;. I&amp;rsquo;ve found that is easier for allowing Syncthing to have access
to the files in order to keep them in sync. (And having my Org files
live at &lt;code&gt;~/Documents/Org&lt;/code&gt; in Termux mimics the directory structure on my
Linux boxes, which makes lots of things easier in terms of sharing
configurations.)&lt;/p&gt;
</description>
                
                        <author>Benjamin.Slade@fakeEmailToMakeValidatorHappy.com (Benjamin Slade)</author>
                
                     
                        
                             
                            
                                
                                 
                                    <category domain="https://babbagefiles.xyz/categories/emacs">emacs</category>
                                 
                                    <category domain="https://babbagefiles.xyz/categories/org">org</category>
                                
                            
                        
                     
                        
                     
                        
                             
                            
                                
                                 
                                    <category domain="https://babbagefiles.xyz/tags/orgroam">orgroam</category>
                                 
                                    <category domain="https://babbagefiles.xyz/tags/android">android</category>
                                
                            
                        
                    
                
                <guid>https://babbagefiles.xyz/org-roam-on-android/</guid>
                <pubDate>Mon, 09 Aug 2021 20:06:00 -0500</pubDate>
            </item>
        
    </channel>
</rss>


