My last post was a tour of Emacs 31, which has since moved into pretest. Sean Whitton announced 31.0.91 , the second pretest, on July 23rd, and that's what I'm writing this on. One of the sections in that post was a short list of new completion knobs, three lines of config I mentioned and moved on from. Those three lines turned into a month-long experiment, so they get their own post. I know how…
Karthik Chikmagalur recently published another of his excellent "Even More Batteries Included with Emacs" posts, digging into lesser-known features that already ship with Emacs today. I wanted to write its mirror image. His post covers the batteries already in the box. Mine covers the ones arriving in Emacs 31. Emacs 31 isn't out yet, but I've been building it from both emacs-31 branch and master…
Quick announcement: this blog now lives on the small net too. If you have a Gemini client around, point it at: gemini://gemini.rahuljuliato.com You'll find the same posts there, rendered as plain gemtext. Wait, Gemini? Gemini (the protocol, in case the name now reminds you of other things) is a small internet protocol that sits somewhere between Gopher and the early web. It works like this: the…
You open your favorite editor, and, out of the box, Emacs writes state files all over the place. It puts bookmarks in ~/.emacs.d/ , drops #auto-saves# next to every file you edit, leaves .~lockfiles~ in your projects, scribbles recentf , history , saveplace , projects , transient/history.el , tramp , network-security.data , multisession/ , url/ , image-dired/ , erc/ , rcirc/ ... you get the…
I have used the proced.el package in Emacs on Linux for years. It is my go-to "ps as a buffer". A nicely formatted, colorized listing of every running process, with auto-update and tree view. I use it far more often than top , htop , or similar tools. But on macOS I noticed something important is missing: no CPU or memory columns. The reason lives in Emacs itself, since proced.el does asks the C…
I've been maintaining Emacs Solo for a while now, and I think it's time to talk about what happened in this latest cycle as the project reaches its two-year mark. For those who haven't seen it before, Emacs Solo is my daily-driver Emacs configuration with one strict rule: no external packages . Everything is either built into Emacs or written from scratch by me in the lisp/ directory. No…
There's a feature in Emacs that I've always loved: vc-git-region-history . You select a range of lines, call the command, and Emacs shows you how those exact lines evolved through git commits. When I'm working in Neovim, I genuinely miss this. There are great git plugins out there, sure, but none of them gave me exactly this: select lines, see their history, navigate commits. And that's it. No…
I'll start by admitting something upfront: for a long time, I was very vocal about not recommending Eglot if you were working with a modern web development stack, especially things like React, TypeScript, ESLint, Tailwind, Vue, etc. I even said so publicly in GitHub issues and discussions. That said, I always liked Eglot. More than liked, actually. Eglot always felt closer to Emacs itself . So…
One of the things that never stops fascinating me about Emacs is how deep the rabbit hole goes when your start exploring... well... anything! You come for a text editor. You stay because it quietly turns into a laboratory and eventually the custom interface for your entire computer experience. Most people associate emojis with mobile keyboards, chat apps, or graphical pickers. Emacs takes a…
In the world of text editing and programming, templating is a superpower . It saves keystrokes, reduces errors, and lets you focus on the bigger picture. For Emacs users, battle-tested packages like yasnippet and tempel are often the go-to solutions, offering powerful features and extensive libraries. But what if you're in the mood for a little crafting? What if you want a solution that's built…
I have a deep appreciation for both the Catppuccin and Modus themes. Having contributed to both projects in the past, I've grown to love their design principles. Catppuccin's popularity and my preference for a consistent theme across all my tools make it a natural choice. However, I also admire the clean, core-focused design of the Modus themes. This led me to an exciting experiment: what if I…
Hey everyone! Following up on my last post about Web Workers with React , I'm excited to dive into another powerful browser API: Service Workers . In this guide, we'll explore how Service Workers can make our React applications more resilient and engaging. We'll start with a basic online-only app and progressively enhance it with offline capabilities, background data synchronization, and real push…
When I'm deep into developing a feature, I don't want to think about whether a file is already open in a buffer, or if I need to search the whole project to find it. I just want to jump straight to the files I'm actively working on, the ones that Git tells me are modified , untracked , or even renamed . Emacs already gives us great defaults for different contexts: ➡ C-x b ( switch-to-buffer ) →…
When people hear "tabs" in an editor, they usually imagine something like browser tabs in Chrome, Firefox, or even VSCode. But Neovim's tabs are quite different, they are workspaces , each containing its own set of windows and splits. Think of them more like tmux's sessions or Emacs' tab-bar , rather than VSCode's tab-line that just lists files. By default, Neovim’s tabline shows placeholders like…
Hey everyone! I recently gave a presentation to my team about using Web Workers with React, and the reception was so positive that I decided to turn the content into a blog post. In this guide, we'll explore how Web Workers can help us keep our React interfaces responsive, even when dealing with heavy computational tasks. We'll go through a practical example, starting with a common problem and…
The 0.3.0 release of Emacs Kick lands today, bringing quiet but quality-of-life improvements while paving the way for future support in Emacs 31. Gone is the company-mode UI. Enter: corfu , floating tooltips, rich font support, and more predictable behavior. Whether you use Emacs in GUI or terminal, the UX feels tighter, more modern, and (if you're on Emacs 31) frankly beautiful. Let’s walk…
Explore how to turn Emacs' native tab-bar and tab-bar-groups into a powerful, tmux-like window and session management experience—no external packages needed. Organize your workflows with tabs, group them by project or context, and navigate with ease inside your Emacs session, all while keeping tmux nearby for when it still shines. Here I'm traversing an open session using this concept of…
Terminal Emacs users often face an annoying limitation: copying and pasting between Emacs and the system clipboard doesn’t "just work." While graphical Emacs integrates with the OS clipboard by default, the terminal version leaves that responsibility to you, especially if you're inside tmux , ssh , or simply prefer living in the terminal. Thankfully, there are excellent packages like: xclip and…
A practical quick-reference for the JJ (Jujutsu) version control system: not a tutorial, but a ready-to-use guide with the most essential commands and workflows. 🧠 Heads-Up: This Is Not a Tutorial! If you're expecting a walkthrough on how to use Jujutsu (JJ) from scratch, this post probably isn't what you're looking for. There are already some great tutorials out there, including the excelent…
⚠️ WARNING: EMOJI HEAVY CONTENT AHEAD ⚠️ 🚨📢 Pro Tip : Need more emoji in your life? Emacs C-x 8 RET is magic 🪄✨ There are many ways to enhance Dired in Emacs. From full-featured packages like diff-hl , all-the-icons-dired and nerd-icons-dired to built-in solutions. There's absolutely nothing wrong with using well-maintained packages (I do for many things!), but sometimes you might want…
Last Friday, I was genuinely surprised by a live demo of my Emacs Solo configuration on the System Crafters Weekly Show . Watching the live demo was an eye-opener, as I hadn't expected the project to get such attention, especially in a live setting. Seeing David Wilson take a deep dive into the setup, testing the configuration live, and exploring how powerful Emacs can be with only its built-in…
As much as anyone else, I love and use MAGIT . It’s an incredibly powerful tool, and I’ve spent countless hours relying on it for my Git workflow. However, from time to time, I find myself trying to stick to Emacs internals and avoid relying on external packages. This is where my emacs-solo config comes in (you can find it at https://github.com/lionyxml/emacs-solo ). The functions I’m sharing…
This guide walks you through compiling Emacs 30.1 on Debian 12, covering the download, checksum verification (SHA1, SHA256), and build process. With Debian’s package dependencies, you can quickly compile, install, and uninstall Emacs with ease. Emacs 30.1 introduces security fixes, performance improvements, and new features. If you prefer to build it from source, this guide walks you through the…
One thing I really missed from Emacs was how easy it was to upload files and text snippets to 0x0.st . For those unfamiliar, 0x0.st is a simple, no-fuss file and text-sharing service where you can upload texts and images and get a shareable link instantly (you can also host your own instance of it). So, I decided to bring that experience to Neovim with nvim-0x0 , my first ever Neovim plugin! 🎉…
In my previous post, I shared how I improved the usability of icomplete-vertical-mode by customizing its rendering to make completions more visually accessible. Since then, I’ve taken things a step further by generalizing the solution into a reusable function and introducing a range of customization options, including prefix markers and alignment controls. In this follow-up, I’ll walk you through…
icomplete-vertical-mode is a popular built-in option for Emacs users who prefer a vertical display of completions, offering a more modern feel similar to packages like Vertico or Ivy. Beyond its default use, it can also handle in-buffer completions. However, its behavior in this context may feel counterintuitive if you're not familiar with it or if you're accustomed to more modern in-buffer…
EDIT: Important! This was always a very specific solution to a very specific issue. However, starting from Emacs 30 , it will no longer work or have any beneficial effects. From Emacs 30 onward, .eln files are linked per machine , meaning the eln-cache directory will automatically include a subfolder based on the comp-abi-hash variable and no adjustments from the user side are needed. For more…
Turn Emacs into a powerful Docker development environment that supports both Docker and Podman workflows. This guide walks you through setting up Dockerfile editing, container management, and automated builds, all within Emacs. Whether you’re switching between Docker and Podman or managing complex containerized projects, Emacs can streamline your development process. Dive in to discover how to…
Emacs-Kick: A Neovim User’s Friendly Start to Emacs -- Get it on Github: https://github.com/LionyxML/emacs-kick/ Introduction As an Emacs enthusiast who has also spent significant time with Neovim, I wanted to create something that would bridge the gap between these two powerful tools. After exploring both ecosystems, I felt there was a need for a configuration that would allow Vim/Neovim users to…
Setting up Go Lang on Debian So you need Go in your Debian, and apt gives something, but not the version you need? Or worst, you need several versions of Go, one for each project you're working on? Fear no more! If you’re looking for a way to manage multiple language runtimes on your Debian system, asdf is an exceptional tool to consider. Not only does it allow you to manage versions of languages…
Discover how to configure Emacs to use the project-specific ESLint binary, ensuring compatibility with older projects. Learn about the issue caused by the ESLint v9.0.0 update and how to hack Flymake (via flymake-eslint) for a happy experience. Making Emacs Work with Project's ESLint This means: local ESlint from node_modules, the one you installed to your project. Introduction After a recent…
Join me as I revisit a ReactJS and TypeScript project I created two years ago: an interactive version of Conway's Game of Life. This journey started as a personal challenge where I wrote the entire code off the top of my head without any refactoring. In this blog post, I'll walk you through the technical aspects of the project and reflect on the growth I've experienced as a developer since then.…
Are you considering migrating your GitHub repositories to Codeberg but finding the process daunting? Look no further! In this blog post, we introduce a powerful solution: the "Github to Codeberg Bulk Migration Script." This script offers a nice way to transfer your projects from GitHub to Codeberg, leveraging automation to simplify the process. In recent years, the landscape of code hosting…
In the world of programming, where every character counts and readability is paramount, the choice of font may seem like a minor detail. Yet, for those who spend countless hours staring at code editors, terminals, and documentation, the right font can make a significant difference in productivity and comfort. Enter Nerd Fonts – the unsung heroes of the programming world. In this blog post, we'll…
Validation is a crucial aspect of any application, ensuring that the data it operates on meets the necessary criteria. However, implementing robust validation can often be complex and time-consuming. Enter ZOD, the lightweight and versatile validation library that simplifies this process without compromising on functionality. Intro According to https://zod.dev/?id=introduction , Zod is a…
For me, one of the finest things of using Emacs is having the same user experience both when I am sessioning trough SSH, hacking with Tmux, reading my RSS news or working as a software engineer. Having no worries about changing between text editors is really nice. Also, starting a "one session to rule" then all as a deamon and opening several GUI/TUI frames in the same session, wow... Emacs is…
Compile Emacs 29.2 from source with a recent bug-fix release highlighted by Eli Zaretskii. This Debian 12-focused tutorial simplifies the process, covering downloading, signature verification, and configuration. With an emphasis on ease, Debian's build dependencies are leveraged, allowing users to quickly build, install, and even uninstall Emacs for a seamless experience. Compiling Emacs 29.2 from…
Explore Rahul's Lab: An archived fusion of tech and educational insights. Immerse yourself in practical software, hands-on projects, and more. Welcome to Rahul's Lab Embark on a journey through the evolution of knowledge and innovation at Rahul's Lab. Formerly an Electrical Engineer and Teacher for Associated Degrees in Brazil, I now curate a collection of resources and projects. This site,…
In this article, we'll guide you through enhancing PyRadio using a Python package that I've developed. This package is designed to streamline the process of importing m3u files into PyRadio. Additionally, it offers the convenience of automatically populating PyRadio with an extensive list of radios using just one command! What is PyRadio? PyRadio stands as a powerful and versatile command-line…
Are you interested in running a local AI companion within Emacs? If so, you're in the right place! In this article, we'll guide you through setting up an Ollama server to run Llama2, Code Llama, and other AI models. This way, you'll have the power to seamlessly integrate these models into your Emacs workflow. How to Install Ollama Installing Ollama on your system is a straightforward process. To…
Discover the Beauty of Catppuccin Themes in Emacs, Coupled with Auto-Dark, Crafting a Perfectly Tailored and Eye-Pleasing Coding Experience. We hope you found this guide enjoyable and useful. If you have any questions or need help, please don't hesitate to reach out by opening an issue on the Auto-Dark-Emacs repository. What is auto-dark ? In today's digital world, the interface of your preferred…
Reclaiming Your Windows Boot Option: A Comprehensive Step-by-Step Solution for GRUB Dual-Booters to Restore the Windows Entry and Achieve Seamless System Switching. Problem Statement After significant updates, it is not uncommon to encounter an issue where the "Windows" entry is missing from the GRUB bootloader menu. Technically, this issue arises when the os-probe utility fails to run, preventing…
Discover how to effortlessly resolve the ç (ce cedilla) issue on your Debian 12 system with a step-by-step guide that makes keyboard quirks a thing of the past. From configuring character input to optimizing your GNOME desktop, this article provides practical solutions for a more user-friendly experience. Problem Statement I am encountering an issue with my English US, intl. keyboard, configured…
As you might recall from my previous post, where I delved into the intricacies of launching Emacs "like a pro," I must confess that my muscle memory sometimes leads me down peculiar paths when I'm not in full "code development" mode, but rather tinkering with and configuring my operating system. You see, both vim and emacs have become ingrained in my muscle memory over the years. However, there…
Speed up your Emacs experience and enjoy quicker startup times with these clever tricks and optimizations. Launching Emacs As you can see in the image above, I have configured my Emacs to be fully featured, capable of handling a wide range of tasks. I use it as an integrated development environment (IDE), a music player, a note-taking app, a frontend for several daemon services, and more. However,…
Have you ever encountered issues when updating your Node.js project? Learn how to upgrade your packages with care and precision, rather than blindly. Interactive Package Upgrades Yarn offers a powerful feature: the ability to upgrade your packages interactively. This means you can selectively choose which packages to update while also getting a sneak peek at their compatibility status. To utilize…