Emacs

A free/libre text editor that has so much functionality that it’s often joked about being an operating system that has an ok text editor.

See also:

  • Time Saved Using Keyboard Shortcuts

    I use Alfred to switch between applications using keyboard shortcuts. On average, I use Alfred 127 times per day, mostly to use keyboard shortcuts.

  • Linting Prose in Emacs

    There are a few ways to get linting of prose (grammar and style, not just spellcheck) in Emacs. Unfortunately, there is no good language server implementation for the popular open-source command line tools. The best option right now is probably proselint, but vale gives better suggestions.

  • Using Vale With Emacs for Prose Linting

    After looking into linting prose in Emacs, I found a way to roll your own prose linter setup using vale (an extensible prose linter), efm-langserver (a generic language server), and eglot (a language server mode for Emacs).

  • Org-Roam-Ui Helps You Peer into Your Brain

    The org-roam-ui is a visualization and exploration companion to org-roam. The force-directed graph of notes (nodes) and links (edges) shows how concepts fit together and relate. I thought it was primarily eye candy, it’s useful for 1) spotting connections you haven’t already made and 2) identifying orphaned notes that could be linked to other notes.

  • How to Use Embark for Emacs

    Embark for Emacs seems like a useful way to further customize Emacs actions (M-x). I still don’t understand why I would want to use it, so this note is an exploration to try it out and see if it’s useful.

  • How to Take Smart Notes (Literature Notes)

    A book by Sönke Ahrens about taking notes to improve productivity and writing which is incredibly convincing but extremely impractical in describing what to actually do.

  • Chatgpt Lowers Barriers to Building Small Projects

    After using it for a few coding projects recently, I find that ChatGPT is a great way to lower the barriers to building smaller, self-contained projects—things that have been hiding in your to do list that take a bit too much effort to attempt but is still a good idea.

  • Show All Buffer Local Variables in an Emacs Buffer

    Sometimes using Emacs you want to know what variables are being set in the current buffer. C-h v lists all the variables, including buffer-local variables in the minibuffer which you can then search and refine just like any other minibuffer session. This is really handy when you customized some settings using hooks and want to verify they took. For example, setting the org-download directory based on filetags.

  • Emacs in the Browser Using Codespaces

    Using codespaces, you can open a web-based VSCode session, open a terminal and install emacs.

  • Emacs Is the Ultimate Editor Building Material

    Emacs is not a great text editor in and of itself—it’s a building material for the best text editor you can make for yourself.

  • Emacs Hyperbole

    Hyperbole is an emacs package that matches text and turns it into links (buttons in hyperbole parlance). Links can execute arbitrary code so it’s kind of like a universal emacs subsystem for linking things together (i.e. hypertext).

  • Emacs Completion Stack

    There are many packages for completions in Emacs. I recently switched over from ido and helm to the MOVEC stack: Marginalia, Orderless, Vertico, Embark, Consult.

  • Personal Indexing Service

    As much as I love my emacs setup, I can’t take my laptop with me everywhere and that is my biggest compliant. For me investing in personal infrastructure makes sense as I build more one of one software that improves my life. More specifically, there are ways of searching for information I’ve built up over the years that I’ve come to rely on. To be able to search for information consistently across devices, there needs to be a personal indexing service.

  • Setting up Typescript and Eslint With Eglot

    Using TypeScript with eglot in Emacs is fiddly to set up. I also prefer using eslint as a plugin to typescript-language-server so no other setup is required. Together, this makes for an extremely portable setup with minimal fuss which is the whole point of the language server protocol to begin with.

  • Org-Mode Inline Macro in the Buffer

    In org-mode, macros can be used to expand text but are only visible when exported. However, by combining org-macro and emacs' built in font-locking system, you can expand macros inline in the buffer.

  • Org-Ai Emacs Integration

    I built org-ai using Python which exposes an AI chat interface through a simple CLI. This makes it a bit clunky when using it from Emacs—I would need to open up an instance of a terminal, activate the virtual environment, and execute the program to start the chat.

  • At Mentions for Org-Mode

    A pattern I really like in Notion is that you can a @ (at) mention any page with search as you type and autocomplete. I’d like to do something similar in org-mode so that I can quickly link related headlines.

  • Principles for Living a Rich Digital Life

    I’ve been thinking more about how to live a rich digital life and what that means in a world of abundance. The following is a work-in-progress list of principles that are starting to form. (Epistemic status: low).

  • Using Grammarly With Emacs

    There’s now an official API for Grammarly and a language server. That means we can use eglot to get Grammarly in Emacs buffers. Here’s the setup which mostly works.

  • Using Chatgpt With Emacs

    There are a few packages and libraries that are being built to use ChatGPT along with Emacs.

  • GCMH Fixes Emacs Garbage Collection Pauses

    When working in emacs, especially in large org-mode files and completion lists, garbage collection pauses cause the experience to feel sluggish. By deferring garbage collection until there is no user input (e.g. you stop typing or step away), the Garbage Collector Magic Hack (GCMH) keeps the Emacs feeling snappy.

  • Emacs and Chromadb

    The nice part about ChromaDB is that you can read the tables in SQLite using the new Emacs 29 sqlite-mode. That means there is no other configuration for accessing the database, you can open the sqlite file directly.

  • Capture and Refile

    The two most important parts of a personal productivity system that I’ve learned are capturing and refiling.

  • Turn Emacs into a Focused Writing Tool

    Emacs can be customized to create a beautiful, focused writing environment akin to Ulysses, iA Writer, Bear, or other minimalist markdown editors.

  • One of One Software

    I would guess that a significant amount of software is written for one person and we should celebrate it more.

  • Web Browser in Emacs

    There is a builtin emacs web browser (eww) but it’s text-based. There are a few options for getting an actual browser in emacs.

  • Codespaces and Emacs TRAMP

    While you can use Emacs in the browser using Codespaces, it involves getting all of your emacs config set up on Codespaces. By using the GitHub CLI you can also use emacs TRAMP over SSH to work in the Codespace instance from your local emacs.

  • Using a Language Server in a Docker Container

    Projects that use docker for local development run into a problem when trying to use language servers with their text editor—they don’t handle multiple environments.

  • Ways to Use AI With Emacs

    I want to better utilize AI tools in my day-to-day work. I suspect there is much more I can be doing and using Emacs as building material to make it work for me.

  • Org-Mode Export to Notion

    I use org-mode for taking notes and keeping track of tasks. I use Notion for work as an internal wiki.

  • Org-Ql from the Command Line

    Most of my tasks and projects are organized using org-mode. I was looking for a way to query them from an LLM and, rather than recreate an index and a database, I can use what I normally use, org-ql using emacs in batch mode.

  • Emacs Natural Title Bar With No Text in Macos

    To make emacs more modern looking in v26, you can enable a “natural title bar” (the color of title bar matches the color of the buffer).

  • Defadvice Is Text Editor Superglue

    The Emacs advice system lets you modify the code running Emacs in a simple way. For example, if you wanted to change one line in a package you use to do something different or fix a bug before the maintainers release a new version, you can “advise” code to do what you want.

  • Capture Output of Chatgpt-Shell in Org-Mode

    I’m messing around with ChatGPT in Emacs and I want to capture the results of a session in org-mode. Since chatgpt-shell is just a buffer (like everything else in emacs), we can write an elisp source block to grab the contents of buffer. Even better, we can tell org-mode to export the results as a markdown block since the code examples all use code fences (the triple backtick).