I recently learned that, as of v0.4.7, Forge ’s forge-copy-url-at-point-as-kill command works on files and regions (like git-link ). That is, when visiting a file inside a git repo, forge-copy-url-at-point-as-kill will copy a (web) link to the current file if the region isn’t active and will copy a permalink to the selected lines if the region is active. This completely replaces the git-link…
A few years ago I wrote microdata.el , an Emacs package for extracting and acting on microdata in email. Since then, I’ve been using it daily to open Discourse and GitHub PR/issue notifications from notmuch with a single keypress ( C-c C-c ) instead of having to find and click on the appropriate link. Many automated emails include structured metadata using either JSON-LD and/or Microdata .…
Update : Emacs 31 will ship with a similar feature to the one described below called minibuffer-nonselected-mode . I can easily tell if an Emacs buffer is focused by looking at the buffer’s mode-line. On the other hand, the only indicator that the minibuffer is focused or not is the cursor, and that’s pretty easy to miss. I wanted to avoid making any intrusive changes to the minibuffer, so I…
Up till now the only prose checker/linter I’ve used in Emacs is jinx . It’s an amazing spell checker for programmers and technical writers: it handles snake_case and CamelCase symbols, knows what to spell-check based on the text’s face, etc. Unfortunately, it’s just a spell checker and won’t catch any grammatical errors. Now I’m looking for a local (offline) grammar checker. Something to catch…
Org-mode will, occasionally, pop up a window that takes over half the screen. Specifically, this happens to when: Capturing a note ( org-capture ): I get a half-screen window asking me to select the capture template. Inserting a timestamp ( org-timestamp ): The calendar takes over half the screen (assuming org-read-date-popup-calendar is non-nil). This is especially annoying in the second case…
My Emacs config lives in a massive org-mode file and I often want to re- tangle from outside Emacs (because, e.g., I broke my Emacs session for some reason). I could just use a simple Makefile , but that’s no fun. Instead, I’ve turned my config into a self-tangling script by adding the following two lines to the top of my init.org file and marking it as executable: #!/usr/bin/env -S sh -c 'emacs…
While there are many ways to pipe to emacs, they all involve either shuttling text by repeatedly calling emacsclient or writing to a temporary file. However, neither are necessary. Basically, while emacs can’t (yet) read from a named pipe (FIFO), it can read standard output from a process so, one gratuitous use of cat later… (defun pager-read-pipe (fname) (let ((buf (generate-new-buffer…