<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Emacs on Will Schenk</title><link>https://willschenk.com/tags/emacs/</link><description>Recent content in Emacs on Will Schenk</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Mon, 25 Aug 2025 11:42:05 +0000</lastBuildDate><atom:link href="https://willschenk.com/tags/emacs/feed.xml" rel="self" type="application/rss+xml"/><item><title>Claude Code in Emacs</title><link>https://willschenk.com/howto/2025/claude_code_in_emacs/</link><pubDate>Mon, 25 Aug 2025 11:42:05 +0000</pubDate><guid>https://willschenk.com/howto/2025/claude_code_in_emacs/</guid><description>&lt;p>
Claude Code provides a CLI interface to Claude that maintains full
project context and can execute commands directly. The claude-code.el
package integrates this into Emacs, giving you access to Claude&amp;#39;s
capabilities without leaving your editor.&lt;/p>
&lt;div id="outline-container-headline-1" class="outline-2">
&lt;h2 id="headline-1">
Key Integration Points
&lt;/h2>
&lt;div id="outline-text-headline-1" class="outline-text-2">
&lt;div id="outline-container-headline-2" class="outline-3">
&lt;h3 id="headline-2">
Project Scope Management
&lt;/h3>
&lt;div id="outline-text-headline-2" class="outline-text-3">
&lt;p>Claude Code operates on entire directory trees rather than individual
files. When you start a session from your project root, Claude has
read access to all files in that directory and can understand
relationships between components, build configurations, and test
files.&lt;/p></description></item><item><title>AI in Emacs</title><link>https://willschenk.com/labnotes/2024/ai_in_emacs/</link><pubDate>Thu, 29 Feb 2024 10:45:21 +0000</pubDate><guid>https://willschenk.com/labnotes/2024/ai_in_emacs/</guid><description>&lt;p>
Everything is better with emacs. Lets see how we can plug in ollama
into it. We are going to use &lt;a href="https://github.com/s-kostyaev/ellama">ellama&lt;/a> and they like the &lt;a href="https://huggingface.co/blog/Isamu136/understanding-zephyr">zephyr&lt;/a>, so lets
pull that. You can configure it to use other things, but lets go with
the defaults for now.&lt;/p>
&lt;p>
&lt;em>&lt;a href="https://willschenk.com/howto/2025/claude_code_in_emacs/">Also see how to use claude code&lt;/a>.&lt;/em>&lt;/p>
&lt;div id="outline-container-headline-1" class="outline-2">
&lt;h2 id="headline-1">
Installation
&lt;/h2>
&lt;div id="outline-text-headline-1" class="outline-text-2">
&lt;div class="src src-bash">
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl"> ollama pull zephyr&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;p>
Update your repos&lt;/p>
&lt;p>
&lt;code class="verbatim">M-x straight-pull-recipe-repositories&lt;/code>&lt;/p>
&lt;p>
Then:&lt;/p>
&lt;div class="src src-elisp">
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-elisp" data-lang="elisp">&lt;span class="line">&lt;span class="cl"> &lt;span class="p">(&lt;/span>&lt;span class="nb">use-package&lt;/span> &lt;span class="nv">ellama&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">:ensure&lt;/span> &lt;span class="no">t&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">:init&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">;; setup key bindings&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">(&lt;/span>&lt;span class="nv">setopt&lt;/span> &lt;span class="nv">ellama-keymap-prefix&lt;/span> &lt;span class="s">&amp;#34;C-c e&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">)&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;div id="outline-container-headline-2" class="outline-2">
&lt;h2 id="headline-2">
Chat interface
&lt;/h2>
&lt;div id="outline-text-headline-2" class="outline-text-2">
&lt;p>
Then we can start up a chat usine &lt;code class="verbatim">ellama-chat&lt;/code> or using &lt;code class="verbatim">C-c e a i&lt;/code> – which is a bit of a
mouthful. Let me see what it thinks about Rudolf Steiner:&lt;/p></description></item><item><title>Updating date in org file</title><link>https://willschenk.com/labnotes/2023/updating_date_in_org_file/</link><pubDate>Mon, 10 Jul 2023 05:33:54 +0000</pubDate><guid>https://willschenk.com/labnotes/2023/updating_date_in_org_file/</guid><description>&lt;p>
More on the learning to emacs.&lt;/p>
&lt;ol>
&lt;li>Save the cursor position to &lt;code class="verbatim">orig-point&lt;/code>&lt;/li>
&lt;li>Go to the beginning of the file&lt;/li>
&lt;li>Look for &lt;code class="verbatim">#+date&lt;/code>&lt;/li>
&lt;li>If you find it, move to the beginning of the line and delete it&lt;/li>
&lt;li>Otherwise move down one line&lt;/li>
&lt;li>Insert the new date&lt;/li>
&lt;li>Go back to where you started&lt;/li>
&lt;/ol>
&lt;div class="src src-elisp">
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-elisp" data-lang="elisp">&lt;span class="line">&lt;span class="cl"> &lt;span class="p">(&lt;/span>&lt;span class="nb">defun&lt;/span> &lt;span class="nv">blog-mode-update-date&lt;/span> &lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">(&lt;/span>&lt;span class="nb">interactive&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">(&lt;/span>&lt;span class="nb">let&lt;/span> &lt;span class="p">((&lt;/span>&lt;span class="nv">orig-point&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="nf">point&lt;/span>&lt;span class="p">)))&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">(&lt;/span>&lt;span class="nf">goto-char&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="nf">point-min&lt;/span>&lt;span class="p">))&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">(&lt;/span>&lt;span class="nb">if&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="nf">search-forward&lt;/span> &lt;span class="s">&amp;#34;#+date&amp;#34;&lt;/span> &lt;span class="no">nil&lt;/span> &lt;span class="no">t&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">(&lt;/span>&lt;span class="nb">progn&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">(&lt;/span>&lt;span class="nv">move-beginning-of-line&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">(&lt;/span>&lt;span class="nv">kill-line&lt;/span>&lt;span class="p">))&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">(&lt;/span>&lt;span class="nb">progn&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">(&lt;/span>&lt;span class="nv">next-line&lt;/span>&lt;span class="p">)))&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">(&lt;/span>&lt;span class="nf">insert&lt;/span> &lt;span class="s">&amp;#34;#+date: &amp;#34;&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="nf">format-time-string&lt;/span> &lt;span class="s">&amp;#34;%Y-%m-%dT%H:%M:%S&amp;#34;&lt;/span>&lt;span class="p">))&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">(&lt;/span>&lt;span class="nf">goto-char&lt;/span> &lt;span class="nv">orig-point&lt;/span>&lt;span class="p">)))&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;div id="outline-container-headline-1" class="outline-2">
&lt;h2 id="headline-1">
References
&lt;/h2>
&lt;div id="outline-text-headline-1" class="outline-text-2">
&lt;ol>
&lt;li>&lt;a href="http://xahlee.info/emacs/emacs/elisp_conditional.html">http://xahlee.info/emacs/emacs/elisp_conditional.html&lt;/a>&lt;/li>
&lt;li>&lt;a href="http://xahlee.info/emacs/emacs/elisp_cursor_position.html">http://xahlee.info/emacs/emacs/elisp_cursor_position.html&lt;/a>&lt;/li>
&lt;/ol>
&lt;/div>
&lt;/div></description></item><item><title>Emacs Blogging mode take 2</title><link>https://willschenk.com/howto/2023/emacs_blogging_mode_take_2/</link><pubDate>Sun, 02 Jul 2023 00:00:00 +0000</pubDate><guid>https://willschenk.com/howto/2023/emacs_blogging_mode_take_2/</guid><description>&lt;p>
I&amp;#39;ve moved the structure of my site around so I thought I&amp;#39;d &lt;a href="https://willschenk.com/howto/2021/emacs_blogging_mode/">change up
how I managed posts&lt;/a>. Also, it was way too slow!&lt;/p>
&lt;p>
Lets get into it.&lt;/p>
&lt;div id="outline-container-headline-1" class="outline-2">
&lt;h2 id="headline-1">
Set it up
&lt;/h2>
&lt;div id="outline-text-headline-1" class="outline-text-2">
&lt;div class="src src-elisp">
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-elisp" data-lang="elisp">&lt;span class="line">&lt;span class="cl"> 
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">;; set the directory&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">(&lt;/span>&lt;span class="nb">setq&lt;/span> &lt;span class="nv">blog-mode-base-dir&lt;/span> &lt;span class="s">&amp;#34;/Users/wschenk/willschenk.com/content&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">;; from magit&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">(&lt;/span>&lt;span class="nb">require&lt;/span> &lt;span class="ss">&amp;#39;transient&lt;/span>&lt;span class="p">)&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;div id="outline-container-headline-2" class="outline-2">
&lt;h2 id="headline-2">
List out all the files
&lt;/h2>
&lt;div id="outline-text-headline-2" class="outline-text-2">
&lt;p>
In my &lt;code class="verbatim">content&lt;/code> directory I have:&lt;/p>
&lt;table class="table">
&lt;tbody>
&lt;tr>
&lt;td>&lt;code class="verbatim">articles&lt;/code>&lt;/td>
&lt;td>long posts&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code class="verbatim">howtos&lt;/code>&lt;/td>
&lt;td>walk throughs on how to do something&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code class="verbatim">labnotes&lt;/code>&lt;/td>
&lt;td>notes to my future self on how to build something&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code class="verbatim">fragments&lt;/code>&lt;/td>
&lt;td>more like short term microposts&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>
Most new things are &lt;code class="verbatim">org&lt;/code> but there are a lot of old &lt;code class="verbatim">md&lt;/code> files. This
finds them all up to a certain depth.&lt;/p></description></item><item><title>Setting up emacs re-re-dux</title><link>https://willschenk.com/howto/2023/setting_up_emacs_reredux/</link><pubDate>Tue, 06 Jun 2023 00:00:00 +0000</pubDate><guid>https://willschenk.com/howto/2023/setting_up_emacs_reredux/</guid><description>&lt;p>
Can we ever stop setting up emacs? I don&amp;#39;t think it&amp;#39;s possible, no.
Lets do it again, with a nice clean setup using &lt;a href="https://github.com/rougier/nano-emacs/tree/master">Nano Emacs&lt;/a>.&lt;/p>
&lt;div id="outline-container-headline-1" class="outline-2">
&lt;h2 id="headline-1">
Compiling emacs
&lt;/h2>
&lt;div id="outline-text-headline-1" class="outline-text-2">
&lt;p>
First lets get ourselves a clean emacs from &lt;a href="https://github.com/d12frosted/homebrew-emacs-plus">d12frosted/homebrew-emacs-plus&lt;/a>.&lt;/p>
&lt;div class="src src-bash">
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl"> $ brew tap d12frosted/emacs-plus
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> $ brew install emacs-plus@29 --with-imagemagick --with-native-comp &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --with-modern-sexy-v2-icon --with-xwidgets
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> $ ln -s /opt/homebrew/opt/emacs-plus@29/Emacs.app /Applications&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;p>
This will take a nice little while.&lt;/p>
&lt;p>
And some graphing things that we will eventually use with &lt;code class="verbatim">org-babel&lt;/code>:&lt;/p></description></item><item><title>Getting emacs working on OSX Monterey</title><link>https://willschenk.com/howto/2021/getting_emacs_working_on_osx_monterey/</link><pubDate>Fri, 12 Nov 2021 00:00:00 +0000</pubDate><guid>https://willschenk.com/howto/2021/getting_emacs_working_on_osx_monterey/</guid><description>&lt;p>
I recently got a new MacBook Pro. I still love my old Pixelbook, but
I&amp;#39;m running too many docker containers on it and its slowing down my
development time. In addition to the beautiful screen, zippy
processor and charge it whenever you feel like it battery life, the
speakers on the new MacBooks are mind blowing. But, of course we need
emacs.&lt;/p>
&lt;p>
Also, ports and function keys. Finally.&lt;/p>
&lt;div id="outline-container-headline-1" class="outline-2">
&lt;h2 id="headline-1">
Install &lt;code class="verbatim">homebrew&lt;/code>
&lt;/h2>
&lt;div id="outline-text-headline-1" class="outline-text-2">
&lt;div class="src src-bash">
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">/bin/bash -c &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="k">$(&lt;/span>curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh&lt;span class="k">)&lt;/span>&lt;span class="s2">”&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;p>
Then run the “next steps part”&lt;/p></description></item><item><title>SQL in Org-Mode</title><link>https://willschenk.com/howto/2021/sql_in_org_mode/</link><pubDate>Sat, 17 Apr 2021 00:00:00 +0000</pubDate><guid>https://willschenk.com/howto/2021/sql_in_org_mode/</guid><description>&lt;p>
I do a lot of sql, and I do a lot of org-mode. Lets put them
together.&lt;/p>
&lt;div id="outline-container-headline-1" class="outline-2">
&lt;h2 id="headline-1">
Native SQLite
&lt;/h2>
&lt;div id="outline-text-headline-1" class="outline-text-2">
&lt;p>
In &lt;code class="verbatim">org-babel-load-languages&lt;/code> turn on &lt;code class="verbatim">sqlite&lt;/code>. (You can use &lt;code class="verbatim">customize&lt;/code>
for this if you don&amp;#39;t have another method in use.)&lt;/p>
&lt;p>
Then you have a source block that looks like&lt;/p>
&lt;div class="src src-org">
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-org" data-lang="org">&lt;span class="line">&lt;span class="cl"> _#+begin&lt;span class="gl">_src sqlite :db test.db :colnames yes
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="gl"> create table if not exists greeting(one varchar(10), two varchar(10));
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="gl"> insert into greeting values( &amp;#39;Hello&amp;#39;, &amp;#39;world!&amp;#39;);
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="gl"> select * from greeting;
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="gl"> _&lt;/span>#+end_src&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;p>
&lt;em>(Remove the &lt;code class="verbatim">_&lt;/code> if you are copy and pasting.)&lt;/em>&lt;/p></description></item><item><title>Setting up emacs for typescript development</title><link>https://willschenk.com/howto/2021/setting_up_emacs_for_typescript_development/</link><pubDate>Tue, 13 Apr 2021 00:00:00 +0000</pubDate><guid>https://willschenk.com/howto/2021/setting_up_emacs_for_typescript_development/</guid><description>&lt;p>
I&amp;#39;ve been playing with deno and typescript, so I thought I&amp;#39;d document
how to setup a basic tide environment with emacs.&lt;/p>
&lt;div id="outline-container-headline-1" class="outline-2">
&lt;h2 id="headline-1">
Prerecs
&lt;/h2>
&lt;div id="outline-text-headline-1" class="outline-text-2">
&lt;p>
Things will go better if you have &lt;code class="verbatim">nativejson&lt;/code> support in your emacs
build. I build from scratch which is super easy, but to check what
you have you can run the following elisp:&lt;/p>
&lt;div class="src src-elisp">
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-elisp" data-lang="elisp">&lt;span class="line">&lt;span class="cl"> &lt;span class="p">(&lt;/span>&lt;span class="nb">if&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="nf">functionp&lt;/span> &lt;span class="ss">&amp;#39;json-serialize&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">(&lt;/span>&lt;span class="nf">message&lt;/span> &lt;span class="s">&amp;#34;Native JSON is available&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">(&lt;/span>&lt;span class="nf">message&lt;/span> &lt;span class="s">&amp;#34;Native JSON is *not* available&amp;#34;&lt;/span>&lt;span class="p">))&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;pre class="example">
Native JSON is available
&lt;/pre>
&lt;p>
You also will need Node &amp;gt; 0.12.0, which you can test with:&lt;/p></description></item><item><title>Emacs Blog Writing and Navigation Mode</title><link>https://willschenk.com/howto/2021/emacs_blogging_mode/</link><pubDate>Mon, 15 Mar 2021 00:00:00 +0000</pubDate><guid>https://willschenk.com/howto/2021/emacs_blogging_mode/</guid><description>&lt;p>
&lt;strong>This &lt;a href="https://willschenk.com/howto/2023/emacs_blogging_mode_take_2/">has been updated&lt;/a>&lt;/strong>&lt;/p>
&lt;p>
This blog is basically my labnotes where I explore different parts of
technology. Almost all of my coding related activity starts off in
this repo, while I explore different things to see how they work. I
have a lot of things in drafts, and I wanted to learn how to build a
simple emacs interface to let me navigate around my file system.&lt;/p>
&lt;p>
I couldn&amp;#39;t find any good documentation on how to do anything with
&lt;code class="verbatim">tabulated-list-mode&lt;/code> so I spend the evening poking around and seeing
how it works. Here you go.&lt;/p></description></item><item><title>Installing emacs on buster</title><link>https://willschenk.com/labnotes/2021/installing_emacs_on_buster/</link><pubDate>Fri, 05 Mar 2021 00:00:00 +0000</pubDate><guid>https://willschenk.com/labnotes/2021/installing_emacs_on_buster/</guid><description>&lt;p>
I&amp;#39;ve already &lt;a href="https://willschenk.com/articles/2020/upgrading_emacs_on_debian/">written about installing emacs-snapshot&lt;/a> on debian buster, here are two additional ways. The first is to use flatpak, and the other is to build from source.&lt;/p>
&lt;div id="outline-container-headline-1" class="outline-2">
&lt;h2 id="headline-1">
Flatpack
&lt;/h2>
&lt;div id="outline-text-headline-1" class="outline-text-2">
&lt;div class="src src-bash">
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo apt-get install flatpak
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo apt install gnome-software-plugin-flatpak
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;p>
Then:&lt;/p>
&lt;div class="src src-bash">
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo flatpak install flathub org.gnu.emacs&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;p>
And running it:&lt;/p>
&lt;div class="src src-bash">
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">flatpak run org.gnu.emacs&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;p>
You can then pin it in your dock and you are good to go.&lt;/p></description></item><item><title>Getting Websters</title><link>https://willschenk.com/labnotes/2020/getting_websters/</link><pubDate>Thu, 30 Jul 2020 00:00:00 +0000</pubDate><guid>https://willschenk.com/labnotes/2020/getting_websters/</guid><description>&lt;p>
A few years ago I read a &lt;a href="http://jsomers.net/blog/dictionary">great post about the value of a good
dictionary&lt;/a>, which I installed on my laptop and then promptly forgot
about. The post is very moving, and I recommend checking it out.&lt;/p>
&lt;p>
It was &lt;a href="https://irreal.org/blog/?p=9035">recently mentioned&lt;/a> on the planet emacs blog circuit and so I
thought I&amp;#39;d document how to get it up and running on my laptop.&lt;/p>
&lt;p>
Also I don&amp;#39;t understand what the appeal of John McPhee&amp;#39;s writing, I&amp;#39;ve
tried a few of his books but found them all so plodding. Perhaps it&amp;#39;s
because I&amp;#39;m not savoring the sentences enough…&lt;/p></description></item><item><title>Upgrading emacs on debian</title><link>https://willschenk.com/labnotes/2020/upgrading_emacs_on_debian/</link><pubDate>Sun, 28 Jun 2020 00:00:00 +0000</pubDate><guid>https://willschenk.com/labnotes/2020/upgrading_emacs_on_debian/</guid><description>&lt;p>
Been playing with &lt;a href="https://github.com/skeeto/elfeed">elfeed&lt;/a> on Emacs 26.1 on &lt;code class="verbatim">buster&lt;/code> and it keeps crashing. I think for &lt;a href="https://www.reddit.com/r/emacs/comments/elswgh/emacs_crashes_when_running_mu4e/">font related reasons&lt;/a>. So lets follow the &lt;a href="https://www.emacswiki.org/emacs/EmacsSnapshotAndDebian">Emacs Wiki Instructions&lt;/a> to upgrade to &lt;code class="verbatim">emacs-snapshots&lt;/code> and see if that helps.&lt;/p>
&lt;div id="outline-container-headline-1" class="outline-2">
&lt;h2 id="headline-1">
Add the snap shot repository.
&lt;/h2>
&lt;div id="outline-text-headline-1" class="outline-text-2">
&lt;p>Make sure you have the tools installed so that apt can do it&amp;#39;s
internet thing.&lt;/p>
&lt;div class="src src-bash">
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo apt-get install software-properties-common
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo apt-get update&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;p>
Add the signing key:&lt;/p>
&lt;div class="src src-bash">
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">wget -q http://emacs.ganneff.de/apt.key -O- &lt;span class="p">|&lt;/span> sudo apt-key add&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>
&lt;/div>
&lt;p>
And add the packages to your local index. Note that I&amp;#39;m specifically
using &lt;code class="verbatim">buster&lt;/code> here so update that if you need do.&lt;/p></description></item><item><title>Beginning Emacs</title><link>https://willschenk.com/howto/2020/beginning_emacs/</link><pubDate>Sat, 06 Jun 2020 00:00:00 +0000</pubDate><guid>https://willschenk.com/howto/2020/beginning_emacs/</guid><description>&lt;div id="outline-container-headline-1" class="outline-2">
&lt;h2 id="headline-1">
Intro
&lt;/h2>
&lt;div id="outline-text-headline-1" class="outline-text-2">
&lt;p>
I&amp;#39;ve been dipping back ito the world of free software, and have been having a huge amount of fun getting back into emacs. I&amp;#39;m using it more of an operating system than I ever did before, as a way to navigate the world using a text interface. I&amp;#39;d never thought I&amp;#39;d be done with the terminal, but this is the first time that I&amp;#39;ve got something better and more powerful.&lt;/p></description></item><item><title>Emacs Tramp tricks</title><link>https://willschenk.com/howto/2020/tramp_tricks/</link><pubDate>Sun, 01 Mar 2020 00:00:00 +0000</pubDate><guid>https://willschenk.com/howto/2020/tramp_tricks/</guid><description>&lt;p>Emacs is amazing. It&amp;rsquo;s a very different sort of thing than a code text editor like Vim or an IDE like VSCode. It&amp;rsquo;s a different way of thinking of how to interact with a computer, where you build up techniques on top of simple tricks that let you get amazing things done. Of course, part of the appeal/challenge is that you need to figure out how to make it work yourself. Since there&amp;rsquo;s not much in the way of gentle tutorials, lets look at what you can do with tramp to get a sense of what is possible.&lt;/p></description></item><item><title>Using Org Mode in Hugo</title><link>https://willschenk.com/howto/2019/using_org_mode_in_hugo/</link><pubDate>Fri, 02 Aug 2019 00:00:00 +0000</pubDate><guid>https://willschenk.com/howto/2019/using_org_mode_in_hugo/</guid><description>&lt;p>
I&amp;#39;m learning &lt;code class="verbatim">org-mode&lt;/code> and I don&amp;#39;t really know what I&amp;#39;m doing, but this
is how I&amp;#39;m trying out writing hugo posts with it. I&amp;#39;m used to
markdown, so this is a what&amp;#39;s different post.&lt;/p>
&lt;div id="outline-container-headline-1" class="outline-2">
&lt;h2 id="headline-1">
Some minor org-mode tweaks
&lt;/h2>
&lt;div id="outline-text-headline-1" class="outline-text-2">
&lt;p>
For some reason when &lt;code class="verbatim">org-mode&lt;/code> starts it doesn&amp;#39;t softwrap the paragragh
text. I like to have it soft-wrapped so everything is on the screen
if it&amp;#39;s not collapsed. Also having some nice indentation makes things
visually cleaner, so add this snippet to your &lt;code class="verbatim">~/.emacs&lt;/code> to have these
turned on by default.&lt;/p></description></item></channel></rss>