Examples of real-life Emacs workflows.
This Reddit post from /u/ilemming
My guess is that instead of philosophical nuggets you'd rather like to hear some practical use cases. I got you.
Please, allow me to invite you to my typical day at my workstation.
So right now I am having to go through tons of reading material. I'm taking an abundance of notes, etc. I'm trying to prep for an exam. I need to read multiple books, and I just started with the first one. I opened PDF-tools and then, using Org-noter I started taking notes. Each note is like an annotation in the book, tied to its specific location. Next time when I go through my notes, I can jump to the specific page in the book. And vice-versa - while re-reading through the book, I can see all related notes, right there in the adjacent window.
It's a massive book, and I had to stay late, and then, Emacs automatically changed my color theme. That's how I set it up - circadian.el switches to the darker theme at sunset. PDF reader also changed its colors, adapting to my color theme, blending the reader and the editor.
Since I'm studying a topic for which I already have many notes, I connected my new notes to the existing ones. I'm using Org-Roam.
Also, I sometimes use flashcards, they really help me to remember the material. I am creating flashcards using a package called anki-edior. My flashcards are my notes. I don't need to go somewhere else to search through my flashcards.
For certain concepts that I don't understand fully, I'm using chatgpt-shell. It is beyond fantastic and almost impossible to describe in a single post. And btw, beautifully integrates with Org-mode. This is, for example, just one of my use cases: When I'm writing a comment or a message to my colleague (and of course, yes, I edit just about any text in Emacs), I can select a paragraph and ask chatgpt-shell to improve it. It does, but it also shows me the diff of the changes, that is how I set it up.
I am also finding many great videos on YouTube. I found that I learn the material better if I read through the transcripts. I usually pull the subtitles and use them to make more notes.
Besides all that, I'm also having to take care of my work duties. When I started my day earlier, as per usual, I opened gh-notify buffer to check all GitHub notifications. Issues, Pull-requests. Using code-review I quickly checked a few PRs, scrolled through the diffs, posted a couple of comments, and approved the PRs.
Then, I decided to look a little bit closer into one of them. I jumped into the project directory using fasd; with a couple keystrokes I created a git-worktree based on the PR; magit has pulled the remote branch and created a local worktree. All I needed was to press a couple of buttons, and it opened the diff between the local branch and origin/main. I am not very familiar with this module though. I opened dired, marked the module's folder, and ran
magit-dired-log
to see thegit log
, but only related to the files in that folder. I saw that Bob (my colleague) made some changes six months ago. Using org-capture I created a note in my work journal, tagging Bob. Now I can always find the note by opening Bob's card and browsing through all related notes.Next, I needed to open a related project, which I didn't have locally. So, finally, I had actually to open my browser. Note that everything I described to this point, all, was done solely in Emacs. But wait, we're not ready to switch just yet. Now, I remembered that I already had to open that repo last week, so I searched through my browser history and found the link to it. <Enter>, and now I'm in the browser. I searched, and I found the document I needed, and I decided - that still didn't warrant cloning the entire project. "I'm just gonna copy the link and put it in my note…". The inserted link would've been something like
https://github.com/booga/wooga/pulls/4110
. But not in Emacs, no. Since I'm using Org-mode, I customizedorg-link-make-description-function
. What it lets you do, is to write your custom function, and that's what I did. My function goes to GitHub and pulls the description of thePR #4110
. And now my link looks like this:Fixes migration in the Orchestration Module booga/wooga#4110
.That's just my typical day In Emacs, and I haven't even mentioned so many other things. I don't know, maybe you'd think: "That's just way too much and not for me…" Or you may think that I must be some sort of crazy to try to do everything in Emacs. But that, technically, would be a bit inaccurate. Yes, I am some sort of crazy, but still, I don't do everything in Emacs. But I try doing most of the things through it.
Check this out, almost for everything I mentioned, Emacs delegates the task to some tool:
- pdftools use poppler and some other things
- anki-editor calls the app to sync your flashcards
- chatgpt-shell uses openai API, and
- magit, gh-notify, code-review - GitHub's
- youtube-sub-extractor uses yt-dlp
- browser-hist.el pulls the browser history from its sqlite db file
Emacs is an incredibly awesome glue. Once it clicks, it really is difficult to not to get excited. Get excited to the point that sometimes, even talking about it may sound crazy.