<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title><![CDATA[Badore’s Life in Emacs]]></title>
<description><![CDATA[Badore’s Life in Emacs]]></description>
<link>https://badore.codeberg.page/</link>
<atom:link href="https://badore.codeberg.page/rss.xml" rel="self" type="application/rss+xml" />
<lastBuildDate>Mon, 26 Oct 2026 20:39:37 +0100</lastBuildDate>
<item>
  <title><![CDATA[M-x keep-lines]]></title>
  <description><![CDATA[
<p>
I used to work as a freelancer. And of course I did my bookkeeping in Emacs. One task was noting down the time I spent on each project each day.
</p>

<p>
I can already hear you saying: "Sure thing, use org-clock!" But org-clock was more machinery than I needed. Especially because I wasn't always in Emacs (yes, sad, but true) when I worked for my clients. Sometimes I was running workshops or coaching sessions away from the keyboard.
</p>

<p>
I just had an org-file with a simple list like this:
</p>

<pre class="example" id="org7228f43">
+ [ ] [2026-10-21 Wed] project A; 0,5 h; status meeting
+ [ ] [2026-10-22 Thu] project B; 1,5 h; coaching
</pre>

<p>
At the end of each month, I would turn this list into invoices for my different clients. And since every client had their own specific template and invoicing requirements, I didn't bother to set up an automated workflow in Emacs. I just had this list and a little macro that converted it into CSV and I handled the rest manually. (Maybe today, with the power of LLMs, I would try to vibe-code some automation.)
</p>

<p>
Now, to prepare an invoice, I only needed the lines for that particular client. I did know about the wonderful function <code>flush-lines</code>. It just removes lines matching a regexp. I was already wondering how to negate my regexp used for <code>flush-lines</code> &#x2026; then I thought: "Maybe there's a sibling function for this purpose?" And behold, Emacs had me covered: <code>M-x keep-lines</code> exists and does exactly what I wanted.
</p>

<p>
This might sound too small to bother mentioning. And maybe my workflow makes you cringe. But that's that two things that I love about Emacs: You can do things your very own way. And sometimes, improving your workflow doesn't take a package or a custom function. Just finding the command that's already there.
</p>

<p>
And that is so satisfying about living in Emacs!
</p>
<div class="taglist"></div>
<p><a href="https://badore.codeberg.page/archive.html">Other posts</a></p><p>Contact: <a href="mailto:emacs@tutanota.de">emacs@tutanota.de</a></p><p>Text and images: © 2026 Badore, <a href="https://creativecommons.org/licenses/by-sa/4.0/">CC BY-SA 4.0</a>. Code examples written for this blog: © 2026 Badore, <a href="https://www.gnu.org/licenses/gpl-3.0.txt">GPL-3.0-or-later</a>. Code from third-party projects remains under its original license and is attributed in the relevant post.</p>]]></description>
  <link>https://badore.codeberg.page/2026-10-26_keep_lines.html</link>
  <guid>https://badore.codeberg.page/2026-10-26_keep_lines.html</guid>
  <pubDate>Mon, 26 Oct 2026 00:00:00 +0100</pubDate>
</item>
<item>
  <title><![CDATA[(message "hello world")]]></title>
  <description><![CDATA[
<p>
Hello everyone,
</p>

<p>
I’m Badore, and I’ve been living in Emacs for over 25 years. That does sound like a long time, but there have been plenty of twists and turns along the way, and the learning never stops.
</p>

<p>
A few years ago, though, I started reading Planet Emacslife, and it feels like someone hit the turbo button on my Emacs journey. So many brilliant ideas and solutions land in my feed that I find myself increasingly humbled. And I wonder how much I really know about Emacs after all. A huge thank you to Sacha Chua for making this possible—and to everyone who so generously shares their knowledge and experience!
</p>

<p>
Now I’ve decided to share some of what I’ve learned and perhaps give something back. I’ll start by describing some of the parts of my setup that I find most useful, along with a few little tips and tricks that surprised me by actually working. But this won’t be a book or a lecture about Emacs. Just a few ideas here and there, and stories about my daily life in Emacs from time to time. I hope you’ll find it useful!
</p>
<div class="taglist"></div>
<p><a href="https://badore.codeberg.page/archive.html">Other posts</a></p><p>Contact: <a href="mailto:emacs@tutanota.de">emacs@tutanota.de</a></p><p>Text and images: © 2026 Badore, <a href="https://creativecommons.org/licenses/by-sa/4.0/">CC BY-SA 4.0</a>. Code examples written for this blog: © 2026 Badore, <a href="https://www.gnu.org/licenses/gpl-3.0.txt">GPL-3.0-or-later</a>. Code from third-party projects remains under its original license and is attributed in the relevant post.</p>]]></description>
  <link>https://badore.codeberg.page/2026-10-25_hello_world.html</link>
  <guid>https://badore.codeberg.page/2026-10-25_hello_world.html</guid>
  <pubDate>Sun, 25 Oct 2026 00:00:00 +0200</pubDate>
</item>
</channel>
</rss>
