Just my blogroll - BlogFlock2026-01-31T13:49:48.719ZBlogFlockIrreal, The Emacs Cat, Justin Barclay, BuzzMachine, Arialdo Martini, Protesilaos Stavrou: News and Announcements, GamingOnLinux Latest Articles, Philip KALUDERCIC, Bowmansarrow, Karthinks, Xah Lee, Emacs@ Dyerdwelling, Jeff Kreeftmeijer, MacAdie Web Blog, manuel uberti, Take on Rules, Bicycle For Your Mind, Wilfred Hughes::Blog, LWN.net, Rock Paper Shotgun Latest Articles Feed, McSweeney’s, Sacha ChuaWhat are we all playing this weekend? - Rock Paper Shotgun Latest Articles Feedhttps://www.rockpapershotgun.com/what-are-we-all-playing-this-weekend-3672026-01-31T08:00:00.000Z<img src="https://assetsio.gnwcdn.com/weekend-cycling.jpg?width=690&quality=85&format=jpg&auto=webp" /> <p>In the past week, two keen cyclists I know have both ruled out getting on their bikes until March. Too cold, they say. Too wet, they say. I'm trying to put their warnings out of mind because I've seen a glimmer of sun and I am desperate to get on my velocipede, ride it out to Epping forest, and see some green.</p>
<p>Maybe I'll get five miles through the big smoke before I have to turn back because my hands have gone blue, but gosh darn it I'm going to give it the old college try.</p>
<p><a href="https://www.rockpapershotgun.com/what-are-we-all-playing-this-weekend-367">Read more</a></p>Emacs and French: Focus flycheck-grammalecte on the narrowed part of the buffer - Sacha Chuahttps://sachachua.com/blog/2026/01/emacs-and-french-focus-flycheck-grammalecte-on-the-narrowed-part-of-the-buffer/2026-01-31T03:22:49.000Z<p>
After learning about French spellcheck and grammar checking from <a href="https://eeame-97718b.frama.io/jours/jour11/">Emacs expliqué à mes enfants</a>, I added <a href="https://github.com/milouse/flycheck-grammalecte">flycheck-grammalecte</a> to my config. Nudged by <a href="https://mastodon.zaclys.com/@lann/115974248832191444">@lann@mastodon.zaclys.com</a>, I finally got around to figuring out why my setup sometimes worked and sometimes didn't. When I checked <code>flycheck-verify-setup</code>, I noticed that grammalecte kept getting disabled. A little digging around showed me that it was getting disabled because of too many errors. That was because it was trying to work on my whole file instead of just the portion that I <a href="https://www.gnu.org/software/emacs/manual/html_node/emacs/Narrowing.html">narrowed</a> to with <code>org-narrow-to-subtree</code> (ooh, just noticed an <code>org-toggle-narrow-to-subtree</code> command).
</p>
<p>
After some fiddling around, I figured out how to define a checker that runs only on the narrowed part of the buffer.
</p>
<div class="org-src-container">
<pre class="src src-emacs-lisp"><code>(<span class="org-keyword">defun</span> <span class="org-function-name">my-flycheck-grammalecte-buffer</span> (checker callback)
(<span class="org-keyword">let*</span> ((temp-file-name (make-temp-file <span class="org-string">"grammalecte"</span>))
(output-buffer (get-buffer-create temp-file-name))
(buffer (current-buffer))
(cmdline (delq nil <span class="org-highlight-quoted-quote">`</span>(<span class="org-string">"python3"</span>
,(expand-file-name <span class="org-string">"flycheck_grammalecte.py"</span>
grammalecte--site-directory)
,(<span class="org-keyword">unless</span> flycheck-grammalecte-report-spellcheck <span class="org-string">"-S"</span>)
,(<span class="org-keyword">unless</span> flycheck-grammalecte-report-grammar <span class="org-string">"-G"</span>)
,(<span class="org-keyword">unless</span> flycheck-grammalecte-report-apos <span class="org-string">"-A"</span>)
,(<span class="org-keyword">unless</span> flycheck-grammalecte-report-nbsp <span class="org-string">"-N"</span>)
,(<span class="org-keyword">unless</span> flycheck-grammalecte-report-esp <span class="org-string">"-W"</span>)
,(<span class="org-keyword">unless</span> flycheck-grammalecte-report-typo <span class="org-string">"-T"</span>)
(option-list <span class="org-string">"-f"</span> flycheck-grammalecte-filters)
(eval (flycheck-grammalecte--prepare-arg-list
<span class="org-string">"-f"</span> flycheck-grammalecte-filters-by-mode))
(eval (flycheck-grammalecte--prepare-arg-list
<span class="org-string">"-b"</span> flycheck-grammalecte-borders-by-mode))
,temp-file-name)))
(args (mapcan (<span class="org-keyword">lambda</span> (arg) (flycheck-substitute-argument arg checker)) cmdline))
(command (flycheck--wrap-command (car args) (cdr args))))
(write-region (buffer-string) nil temp-file-name)
(make-process <span class="org-builtin">:name</span> <span class="org-string">"grammalecte"</span>
<span class="org-builtin">:buffer</span> output-buffer
<span class="org-builtin">:command</span> command
<span class="org-builtin">:sentinel</span>
(<span class="org-keyword">lambda</span> (process status)
(<span class="org-keyword">let</span> ((errors (<span class="org-keyword">with-current-buffer</span> (process-buffer process)
(message <span class="org-string">"%s"</span> (buffer-string))
(flycheck-parse-with-patterns
(buffer-string)
checker
(current-buffer)))))
(delete-file temp-file-name)
(kill-buffer output-buffer)
<span class="org-comment-delimiter">;; </span><span class="org-comment">offset</span>
(funcall
callback
<span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">finished</span>
(<span class="org-keyword">let</span> ((offset (<span class="org-keyword">save-excursion</span> (goto-char (point-min))
(line-number-at-pos nil t))))
(mapcar
(<span class="org-keyword">lambda</span> (err)
(<span class="org-keyword">let</span> ((new-err (copy-flycheck-error err)))
(<span class="org-keyword">setf</span> (cl-struct-slot-value <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">flycheck-error</span> <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">buffer</span> new-err)
buffer)
(<span class="org-keyword">setf</span> (cl-struct-slot-value <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">flycheck-error</span> <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">line</span> new-err)
(+ (flycheck-error-line new-err)
offset -1))
(<span class="org-keyword">setf</span> (cl-struct-slot-value <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">flycheck-error</span> <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">-end-line</span> new-err)
(+ (flycheck-error-end-line new-err)
offset -1))
new-err))
errors))))))))
(<span class="org-keyword">defun</span> <span class="org-function-name">my-flycheck-grammalecte-setup</span> ()
<span class="org-doc">"Build the flycheck checker, matching your taste."</span>
(<span class="org-keyword">interactive</span>)
(<span class="org-keyword">unless</span> (grammalecte--version)
(advice-add <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">grammalecte-download-grammalecte</span> <span class="org-builtin">:after-while</span>
<span class="org-highlight-quoted-quote">#'</span><span class="org-highlight-quoted-symbol">flycheck-grammalecte--retry-setup</span>))
(grammalecte--augment-pythonpath-if-needed)
(flycheck-define-generic-checker <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">my-grammalecte-narrowed</span>
<span class="org-doc">"Report Grammalecte errors, but only for the narrowed section."</span>
<span class="org-builtin">:start</span> <span class="org-highlight-quoted-quote">#'</span><span class="org-highlight-quoted-symbol">my-flycheck-grammalecte-buffer</span>
<span class="org-builtin">:modes</span> flycheck-grammalecte-enabled-modes
<span class="org-builtin">:predicate</span> (<span class="org-keyword">lambda</span> ()
(<span class="org-keyword">if</span> (functionp flycheck-grammalecte-predicate)
(funcall flycheck-grammalecte-predicate)
t))
<span class="org-builtin">:enabled</span> <span class="org-highlight-quoted-quote">#'</span><span class="org-highlight-quoted-symbol">grammalecte--version</span>
<span class="org-builtin">:verify</span> <span class="org-highlight-quoted-quote">#'</span><span class="org-highlight-quoted-symbol">flycheck-grammalecte--verify-setup</span>)
(<span class="org-keyword">setf</span> (flycheck-checker-get <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">my-grammalecte-narrowed</span> <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">error-patterns</span>)
(seq-map (<span class="org-keyword">lambda</span> (p)
(cons (flycheck-rx-to-string <span class="org-highlight-quoted-quote">`</span>(<span class="org-keyword">and</span> ,@(cdr p))
<span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">no-group</span>)
(car p)))
flycheck-grammalecte--error-patterns))
(add-to-list <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">flycheck-checkers</span> <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">grammalecte</span>)
(flycheck-grammalecte--patch-flycheck-mode-map))
</code></pre>
</div>
<p>
After I use <code>my-flycheck-grammalecte-setup</code>, I can use <code>flycheck-select-checker</code> to select <code>my-grammalecte-narrowed</code> and then use <code>flycheck-buffer</code> to run it. Then it will underline all the number/gender agreement issues I usually have. It's nice that I can practise editing my text with this script before I run the text through an LLM (also via flycheck) for feedback on wording.
</p>
<figure id="org042646b">
<a href="https://sachachua.com/blog/2026/01/emacs-and-french-focus-flycheck-grammalecte-on-the-narrowed-part-of-the-buffer/2026-01-30_22-20-20.png"><img src="https://sachachua.com/blog/2026/01/emacs-and-french-focus-flycheck-grammalecte-on-the-narrowed-part-of-the-buffer/2026-01-30_22-20-20.png" alt="2026-01-30_22-20-20.png"></a>
<figcaption><span class="figure-number">Figure 1: </span>Screenshot of grammalecte providing grammar feedback</figcaption>
</figure>
<div class="note">This is part of my <a href="https://sachachua.com/dotemacs#multimedia-learning-french">Emacs configuration.</a></div><div><a href="https://sachachua.com/blog/2026/01/emacs-and-french-focus-flycheck-grammalecte-on-the-narrowed-part-of-the-buffer/index.org">View org source for this post</a></div>
<p>You can <a href="mailto:sacha@sachachua.com?subject=Comment%20on%20https%3A%2F%2Fsachachua.com%2Fblog%2F2026%2F01%2Femacs-and-french-focus-flycheck-grammalecte-on-the-narrowed-part-of-the-buffer%2F&body=Name%20you%20want%20to%20be%20credited%20by%20(if%20any)%3A%20%0AMessage%3A%20%0ACan%20I%20share%20your%20comment%20so%20other%20people%20can%20learn%20from%20it%3F%20Yes%2FNo%0A">e-mail me at sacha@sachachua.com</a>.</p>Wreckfest 2's career mode is based around a fender bending moral alignment chart of lawful racers and chaotic crashers - Rock Paper Shotgun Latest Articles Feedhttps://www.rockpapershotgun.com/wreckfest-2s-career-mode-is-based-around-a-fender-bending-moral-alignment-chart-of-lawful-racers-and-chaotic-crashers2026-01-30T17:25:11.000Z<img src="https://assetsio.gnwcdn.com/wreckfest-2-career-mode-dev-blog-1-01.jpg?width=690&quality=85&format=jpg&auto=webp" /> <p>Are you more of a supervan wrecker or a bone stock maniac? Can you be best described as a British couch racing champion, or is your calling more in the realms of Finnish folk? These are the sorts of questions you'll have to pose to yourself whenever you fire up <a href="https://www.rockpapershotgun.com/games/wreckfest-2">Wreckfest 2</a>'s still-in-the works career mode, which devs Bugbear Entertainment have just laid out a bunch of plans for.</p>
<p><a href="https://www.rockpapershotgun.com/wreckfest-2s-career-mode-is-based-around-a-fender-bending-moral-alignment-chart-of-lawful-racers-and-chaotic-crashers">Read more</a></p>Turtle Beach Burst II Pro gaming mouse review - Rock Paper Shotgun Latest Articles Feedhttps://www.rockpapershotgun.com/turtle-beach-burst-ii-pro-gaming-mouse-review2026-01-30T16:44:37.000Z<img src="https://assetsio.gnwcdn.com/Turtle-Beach-Burst-II-Pro-Quick-Kits.jpg?width=690&quality=85&format=jpg&auto=webp" />
<p>The Turtle Beach Burst II Pro’s raison d'être is to bung a <a href="https://www.rockpapershotgun.com/games/valorant">Valorant</a> esportist’s Christmas list of premium features into an ultra-lightweight gaming mouse; a class of peripheral that’s more accustomed to jettisoning luxuries than hoarding them. Thus we have a desk rat that weighs 57g, less than half of the apparently immortal <a href="https://www.rockpapershotgun.com/logitech-g502-hero-review">Logitech G502 Hero</a>, while packing pleasantly clicky optical switches and an 8K polling sensor – meaning it sends its latest positional info to the PC eight thousand times a second. That’s Windows 11 levels of notification spam.</p>
<p><a href="https://www.rockpapershotgun.com/turtle-beach-burst-ii-pro-gaming-mouse-review">Read more</a></p>Emacs Carnival February 2026: Completion - Sacha Chuahttps://sachachua.com/blog/2026/01/emacs-carnival-february-2026-completion/2026-01-30T16:41:18.000Z<p>
For the Emacs Carnival theme for February, let's learn more about completion together.
There are all sorts of cheesy puns one can make about completion and Emacs and Valentine's Day, like "You complete me," but beyond the jokes, it's actually a really good topic to help us work with Emacs more efficiently.
</p>
<div id="outline-container-orgc919a51" class="outline-3">
<h3 id="orgc919a51">First, what's the <a href="https://www.emacswiki.org/emacs/Carnival">Emacs Carnival</a>?</h3>
<div class="outline-text-3" id="text-orgc919a51">
<p>
From Christian Tietze:
</p>
<blockquote>
<p>
A blog carnival is a fun way to tie together a community with shared writing prompts, and marvel at all the creative interpretations of the topic of the month.
</p>
</blockquote>
<p>
You can get a sense of previous carnivals by checking out the previous ones:
</p>
<table>
<colgroup>
<col class="org-left">
<col class="org-left">
<col class="org-left">
</colgroup>
<thead>
<tr>
<th scope="col" class="org-left">Month</th>
<th scope="col" class="org-left">Host</th>
<th scope="col" class="org-left">Topic</th>
</tr>
</thead>
<tbody>
<tr>
<td class="org-left">June 2025</td>
<td class="org-left"><a href="https://www.emacswiki.org/emacs/ctietze">ctietze</a></td>
<td class="org-left"><a href="https://christiantietze.de/posts/2025/06/emacs-carnival-2025-06-take-two/">"Take Two"</a></td>
</tr>
<tr>
<td class="org-left">July</td>
<td class="org-left"><a href="https://www.emacswiki.org/emacs/gnewman">gnewman</a></td>
<td class="org-left"><a href="https://gregnewman.io/blog/emacs-carnival-2025-07-writing-experience/">"Writing Experience"</a></td>
</tr>
<tr>
<td class="org-left">August</td>
<td class="org-left"><a href="https://www.emacswiki.org/emacs/takeonrules">takeonrules</a></td>
<td class="org-left"><a href="https://takeonrules.com/2025/08/01/emacs-carnival-2025-08-your-elevator-pitch-for-emacs/">"Your Elevator Pitch for Emacs"</a></td>
</tr>
<tr>
<td class="org-left">September</td>
<td class="org-left"><a href="https://www.emacswiki.org/emacs/rodiongoritskov">rodiongoritskov</a></td>
<td class="org-left"><a href="https://goritskov.com/posts/obscure_packages.html">"Obscure packages"</a></td>
</tr>
<tr>
<td class="org-left">October</td>
<td class="org-left"><a href="https://www.emacswiki.org/emacs/AndyDrop">AndyDrop</a></td>
<td class="org-left"><a href="https://plaindrops.de/blog/2025/emacscarnival/">"Maintenance, server or home or garden"</a></td>
</tr>
<tr>
<td class="org-left">November</td>
<td class="org-left"><a href="https://www.emacswiki.org/emacs/donaldh">donaldh</a></td>
<td class="org-left"><a href="https://donaldh.wtf/2025/10/emacs-carnival-2025-11-an-ode-to-org-babel/">"An ode to org-babel"</a></td>
</tr>
<tr>
<td class="org-left">December</td>
<td class="org-left"><a href="https://www.emacswiki.org/emacs/GeorgeJones">GeorgeJones</a></td>
<td class="org-left"><a href="https://curious.port111.com/2025/11/01/emacs-carnival-december-the-people.html/">"The People of Emacs"</a></td>
</tr>
<tr>
<td class="org-left">January 2026</td>
<td class="org-left"><a href="https://www.emacswiki.org/emacs/ctietze">ctietze</a></td>
<td class="org-left"><a href="https://christiantietze.de/posts/2026/01/emacs-carnival-2026-01-this-year-i-will/">"This year, I'll…"</a></td>
</tr>
</tbody>
</table>
<p>
You don't have to be an expert in order to post. In fact, this is a great way for all of us (beginners and otherwise) to focus on a topic together. Let's treat it like a kind of book club where we can share our notes as we learn.
</p>
</div>
</div>
<div id="outline-container-org6a2917b" class="outline-3">
<h3 id="org6a2917b">What do we mean by completion in Emacs?</h3>
<div class="outline-text-3" id="text-org6a2917b">
<p>
<a href="https://www.emacswiki.org/emacs/CategoryCompletion">Completion</a> can make it faster to enter text and to reduce errors. You can use it to find Emacs commands even if you don't know their full names or keyboard shortcuts. You can use it to expand abbreviations or even fix the typos you usually make. You can use it when you code and when you write. I've heard some people define common abbreviations across different programming languages so they don't have to remember the differences between syntaxes, and minibuffer-completion-based interfaces like consult-ripgrep let you flip through search results astoundingly quickly.
</p>
<p>
Let's start by talking about two types of completion:
</p>
<ul class="org-ul">
<li><b>minibuffer completion,</b> which happens in the small window at the bottom of the screen whenever you use M-x, find a file, etc. This is where you can type a little and then find matching options so that you don't have to remember the full names of commands or files. Be sure to check out <a href="https://www.masteringemacs.org/article/understanding-minibuffer-completion">Understanding Minibuffer Completion - Mastering Emacs</a>!</li>
<li><b>in-buffer completion,</b> like when you expand an abbreviation, insert a snippet, or fill in the rest of a variable name.</li>
</ul>
<p>
Here are some ideas for things to explore. Pick an idea or come up with your own and write a post sharing what you're figuring out!
</p>
<ul class="org-ul">
<li><b>Minibuffer completion</b>
<ul class="org-ul">
<li>Do you know about <code>S-M-x</code> (<code>execute-extended-command-for-buffer</code> - available with Emacs 28.1 or higher), which suggests commands relevant to the current mode?</li>
<li>Have you gotten the hang of using <code>M-p</code> to go back through your history? (Did you know you can interactively search through that history with <code>C-s</code> and <code>C-r</code>?)</li>
<li>Do you know about using <code>M-n</code> to go into the <a href="https://engineering.collbox.co/post/working-faster-in-emacs-by-reading-the-future/">future history</a>?</li>
<li>Have you tried saving your minibuffer history with <a href="https://github.com/emacs-mirror/emacs/blob/master/lisp/savehist.el">savehist</a>?</li>
<li>Do you want to experiment with <a href="https://irreal.org/blog/?p=314">recursive minibuffers</a> so that you can do something else in the middle of a completion?</li>
<li>Do you have nicer completion set up, like <a href="https://www.gnu.org/software/emacs/manual/html_node/emacs/Icomplete.html">icomplete-vertical-mode</a>, <a href="http://xahlee.info/emacs/emacs/emacs_fido_mode.html">fido-mode or fido-vertical-mode</a>, <a href="https://www.gnu.org/software/emacs/manual/html_mono/ido.html">ido-mode or ido-vertical-mode</a>, <a href="https://github.com/emacsmirror/ivy">ivy</a>, or <a href="https://github.com/minad/vertico">vertico</a>? This makes things like <code>M-x</code> (<code>execute-extended-command</code>) and <code>M-y</code> (<code>yank-pop</code>) soo much nicer!</li>
<li>Have you experimented with other completion styles like <a href="https://github.com/oantolin/orderless">orderless</a> so that you can type parts of the completion name in any order?</li>
<li>Have you checked out the convenient search and navigation commands in more complex completion frameworks like <a href="https://github.com/minad/consult">consult</a>, <a href="https://elpa.gnu.org/packages/counsel.html">counsel</a>, or <a href="https://github.com/emacs-helm/helm">helm</a>?</li>
<li>Have you experimented with other <a href="https://www.gnu.org/software/emacs/manual/html_node/emacs/Completion-Options.html">sort orders</a> like the built-in historical option or more complex sorts with <a href="https://github.com/radian-software/prescient.el">prescient.el</a>?</li>
<li>Do you want to see additional information when you're choosing completions? Try out <a href="https://github.com/minad/marginalia">marginalia</a>.</li>
<li>Have you checked out <a href="https://github.com/oantolin/embark">embark</a> for doing other things with your completion like inserting a file name instead of opening it, or changing the command that you wanted to do, or acting on multiple items?</li>
<li>If you use Org Mode, do you want to <a href="https://www.gnu.org/software/emacs/manual/html_node/org/Adding-Hyperlink-Types.html">make your own custom Org link type with completion</a>?
(I really like being able to quickly link to <a href="https://sachachua.com/dotemacs#linking-to-blog-posts">blog posts</a>, <a href="https://sachachua.com/dotemacs#links-to-my-config">parts of my config</a>, or <a href="https://sachachua.com/blog/2024/01/using-an-emacs-lisp-macro-to-define-quick-custom-org-mode-links-to-project-files/">project files</a> with completion)</li>
<li>Do you want to define your own completion commands, maybe even with previews, dynamic collections or asynchronous data?</li>
</ul></li>
<li><b>In-buffer completion</b>
<ul class="org-ul">
<li>Have you set up your own <a href="https://www.gnu.org/software/emacs/manual/html_node/emacs/Abbrevs.html">abbreviations</a> to fix common typos or expand text quickly?</li>
<li>Have you tried using <a href="https://www.gnu.org/software/emacs/manual/html_node/emacs/Dynamic-Abbrevs.html">dabbrev-expand</a> to expand words based on what you have in the current buffer or in other buffers?</li>
<li>Do you want to try <a href="https://www.gnu.org/software/emacs/manual/html_node/autotype/Hippie-Expand.html">hippie-expand</a> to try different functions for expansion?</li>
<li>Have you defined your own snippets for prose or code? (<a href="https://github.com/joaotavora/yasnippet">Yasnippet</a> is popular.)
<ul class="org-ul">
<li>Did you know you can <a href="https://joaotavora.github.io/yasnippet/snippet-development.html#orgcde188c">embed Emacs Lisp in your Yasnippet templates</a>?</li>
</ul></li>
<li>Have you tried <a href="https://www.gnu.org/software/emacs/manual/html_node/emacs/Icomplete.html">icomplete-in-buffer</a>, <a href="https://github.com/minad/corfu">corfu</a>, <a href="https://github.com/company-mode/company-mode">company</a>, or some other in-buffer completion framework?
<ul class="org-ul">
<li>If you use Yasnippet and you've just added completion at point, have you added your snippets to the completions with something like <a href="https://github.com/elken/yasnippet-capf">yasnippet-capf</a>?</li>
</ul></li>
<li>Do you want context-sensitive completions for your shell commands in Emacs? Try <a href="https://www.masteringemacs.org/article/pcomplete-context-sensitive-completion-emacs">pcomplete</a> - you can even define your own.</li>
<li>If you code, do you have <a href="https://github.com/emacs-lsp/lsp-mode">LSP</a>, <a href="https://github.com/joaotavora/eglot">Eglot</a>, or something similar set up to offer you completions in your programming languages?</li>
</ul></li>
<li>Meta: What else can you bring into Emacs so that you can take advantage of all the completions that you've set up, like note-taking or e-mail? (Ex: <a href="https://codeberg.org/martianh/mastodon.el">mastodon.el</a> + <a href="https://github.com/emacsmirror/org-contacts">org-contacts</a> + a little code to insert a <a href="https://sachachua.com/dotemacs#mastodon-org-contacts-complete">Mastodon handle with completion</a> = I can think of people by name instead of by handle!)</li>
</ul>
</div>
</div>
<div id="outline-container-org615ceea" class="outline-3">
<h3 id="org615ceea">Things I want to learn about</h3>
<div class="outline-text-3" id="text-org615ceea">
<p>
For example, this month, I want to…
</p>
<ul class="org-ul">
<li>Minibuffer:
<ul class="org-ul">
<li>Figure out some kind of approximate speech-based minibuffer completion for commands</li>
<li>Create a custom Org Mode link type for emacswiki and other things I refer to frequently</li>
<li>Write about the completion functions I'm using to help me learn French</li>
</ul></li>
<li>In-buffer completion:
<ul class="org-ul">
<li>Notice where I keep typing the same kinds of things and define more snippets for them</li>
<li>Figure out some kind of speech interface for expanding snippets</li>
<li>Sort out completion in programming buffers so that I can finally take advantage of LSP</li>
<li>Complete French words in-buffer ignoring accented characters</li>
</ul></li>
<li>Organize tons of completion-related links from <a href="https://sachachua.com/blog/category/emacs-news">Emacs News</a> onto <a href="https://www.emacswiki.org/emacs/CategoryCompletion">EmacsWiki: Category Completion</a> and other pages</li>
<li>Revisit the completion-related code in my <a href="https://sachachua.com/dotemacs">config</a> to dust off things that I can update, remember to use, or document with <a href="https://github.com/emacsmirror/gif-screencast">gif-screencast</a></li>
</ul>
<p>
I'll publish my notes on my blog and I'll add them to this post as well. I'd love to check out your notes too!
</p>
</div>
</div>
<div id="outline-container-org4183def" class="outline-3">
<h3 id="org4183def">How to submit your entry/entries</h3>
<div class="outline-text-3" id="text-org4183def">
<p>
Please <a href="mailto:sacha@sachachua.com">e-mail me at sacha@sachachua.com</a> or <a href="https://social.sachachua.com/@sacha">DM me via Mastodon</a> with a link to your post(s) by February 28 so that I can add them to this post. I'm happy to link to multiple posts. For example, here are some things you might like to write about:
</p>
<ul class="org-ul">
<li>what you're thinking of figuring out (in case other people have suggestions)</li>
<li>your notes along the way</li>
<li>your current setup</li>
<li>things you're particularly proud of</li>
</ul>
<p>
Looking forward to hearing from you!</p>
</div>
</div>
<div><a href="https://sachachua.com/blog/2026/01/emacs-carnival-february-2026-completion/index.org">View org source for this post</a></div>
<p>You can <a href="mailto:sacha@sachachua.com?subject=Comment%20on%20https%3A%2F%2Fsachachua.com%2Fblog%2F2026%2F01%2Femacs-carnival-february-2026-completion%2F&body=Name%20you%20want%20to%20be%20credited%20by%20(if%20any)%3A%20%0AMessage%3A%20%0ACan%20I%20share%20your%20comment%20so%20other%20people%20can%20learn%20from%20it%3F%20Yes%2FNo%0A">e-mail me at sacha@sachachua.com</a>.</p>[$] Compiling Rust to readable C with Eurydice - LWN.nethttps://lwn.net/Articles/1055211/2026-01-30T16:09:24.000Z<p>
A few years ago, the only way to compile Rust code was using the rustc compiler
with LLVM as a backend. Since then, several projects, including
<a href="https://github.com/thepowersgang/mrustc?tab=readme-ov-file#mutabahs-rust-compiler">
Mutabah's Rust Compiler</a> (mrustc), <a href="https://lwn.net/Articles/1040197/">GCC's Rust
support</a> (gccrs),
<a href="https://lwn.net/Articles/907405/#rust_codegen_gcc">
rust_codegen_gcc</a>, and
<a href="https://lwn.net/Articles/964735/">
Cranelift</a> have made enormous progress
on diversifying Rust's compiler implementations. The most recent such project,
<a href="https://github.com/AeneasVerif/eurydice?tab=readme-ov-file#eurydice">
Eurydice</a>, has a
more ambitious goal: converting Rust code to clean C code. This is especially
useful in high-assurance software, where existing verification and compliance
tools expect C. Until such tools can be updated to work with Rust, Eurydice could
provide a smoother transition for these projects, as well as a stepping-stone
for environments that have a C compiler but no working Rust compiler. Eurydice
has been used to compile some post-quantum-cryptography routines from Rust to C,
for example.
</p>Beyond Good & Evil 2 director confirms team are "unaffected" by Ubisoft cuts, "remain committed" to the game - Rock Paper Shotgun Latest Articles Feedhttps://www.rockpapershotgun.com/beyond-good-evil-2-director-confirms-team-are-unaffected-by-ubisoft-cuts-remain-committed-to-the-game2026-01-30T16:07:09.000Z<img src="https://assetsio.gnwcdn.com/beyond-good-and-evil-2-unaffected-ubisoft-changes-01.jpg?width=690&quality=85&format=jpg&auto=webp" /> <p>Ubisoft recently unleashed a raft of <a href="https://www.rockpapershotgun.com/prince-of-persia-the-sands-of-time-remake-and-more-cancelled-by-ubisoft-with-layoffs-potentially-on-the-horizon">cancellations, delays and studio closures</a> as part of a brutal bout of corporate restructuring. We've still yet to see how all of the repercussions of it will go, with <a href="https://www.rockpapershotgun.com/ubisoft-propose-cutting-up-to-200-jobs-at-paris-headquarters-as-unions-reportedly-agree-three-day-strike">proposed voluntary redundancies</a> at the company's Paris headquarters having seen unions put plans in place for a <a href="https://www.rockpapershotgun.com/unionised-french-ubisoft-workers-put-out-call-for-an-international-strike-held-by-all-current-employees">three day strike in February</a>.</p>
<p>One of the games which wasn't among the cancellations was long-in-development sequel <a href="https://www.rockpapershotgun.com/games/beyond-good-and-evil-2">Beyond Good and Evil 2</a>, and its director has now confirmed as much, offering a brief message to reassure fans and encourage folks to support devs affected by Ubisoft's bloodletting.</p>
<p><a href="https://www.rockpapershotgun.com/beyond-good-evil-2-director-confirms-team-are-unaffected-by-ubisoft-cuts-remain-committed-to-the-game">Read more</a></p>Extracting Data From Journelly Entries - Irrealhttps://irreal.org/blog/?p=135772026-01-30T15:33:40.000Z<p>
As you all know, I am always writing about how much I like and use Journelly. One of the things that I always say is that since Journelly saves it data as an Org mode file—or, if you prefer, as a Markdown file—the file is essentially a database that can be queried and processed to produce other files.
</p>
<p>
Álvaro Ramírez has <a href="https://xenodium.com/film-tv-bookmarks-chaos-resolved">a very interesting post</a> that describes one such workflow. Much like I might do, Ramírez adds an entry in his Journelly when he comes across some data about a movie he might want to watch. It may be an IMDB entry, a Reddit post, or even just something someone told him so that all he has is the movie or director name. The common denominator is that he adds a tag such as #film or #watch to mark those entries having to do with movies he should watch. Journelly can, of course, search on the tags but Ramírez has a better way.
</p>
<p>
First he extracts all the entries having an appropriate tag into a <code>watchlist.org</code> file. That gives him a file with all the movies he might want to watch. He uses this and the Claude Code agent to look up each entry in IMDB and to retrieve all the metadata for each movie from IMDB and put it in a db.org file. Finally, he uses the db.org file to generate HTML so that he has a browsable file showing each movie along with its poster.
</p>
<p>
Take a look at his post for the details and to see the final results. As Ramírez says,
</p>
<blockquote>
<p>
At the center of all it all my beloved org syntax. Thanks to plain text formats, we can easily peek at them, query them, poke at them, tweak them, and bend til our heart’s content. It’s just so versatile and now we can throw them at LLMs, too.
</p>
</blockquote>
<p>
Almost none of this is something you’d expect a text editor to do but the Combination of Emacs and Journelly provides a way of moving from free form capture entries to a polished, browsable file.</p>
The Award for Excellence in Open Source goes to Greg Kroah-Hartman - LWN.nethttps://lwn.net/Articles/1056699/2026-01-30T15:26:14.000ZDaniel Stenberg, the recipient of last year's Award for Excellence in Open
Source from the European Open Source Academy, <a
href="https://daniel.haxx.se/blog/2026/01/30/gregkh-awarded-the-prize-for-excellence-in-open-source-2026/">presented
that award to this year's recipient</a>: Greg Kroah-Hartman.
<p>
<blockquote class="bq">
It's impossible to overstate the importance of the work Greg has
done on Linux. In software, innovation grabs headlines, but
stability saves lives and livelihoods. Every Android phone, every
web server, every critical system running Linux depends on Greg's
meticulous work. He ensures that when hospitals, banks,
governments, and individuals rely on Linux, it doesn't fail
them. His work represents the highest form of service: unglamorous,
relentless, and essential.
</blockquote>Three stable kernel updates - LWN.nethttps://lwn.net/Articles/1056693/2026-01-30T14:45:40.000ZThe
<a href="https://lwn.net/Articles/1056694/">6.18.8</a>,
<a href="https://lwn.net/Articles/1056695/">6.12.68</a>, and
<a href="https://lwn.net/Articles/1056696/">6.6.122</a> stable kernel updates have been
released; each contains another set of important fixes.Security updates for Friday - LWN.nethttps://lwn.net/Articles/1056692/2026-01-30T14:43:59.000ZSecurity updates have been issued by <b>AlmaLinux</b> (curl, gimp:2.8, glibc, grafana, grafana-pcp, kernel, osbuild-composer, php:8.3, python-urllib3, python3.11, and python3.12), <b>Debian</b> (chromium), <b>Mageia</b> (ceph, gpsd, libxml2, openjdk, openssl, and xen), <b>SUSE</b> (abseil-cpp, assertj-core, coredns, freerdp, java-11-openjdk, java-25-openjdk, libxml2, openssl-1_0_0, openssl-1_1, python, python-filelock, and python311-sse-starlette), and <b>Ubuntu</b> (kernel, linux, linux-aws, linux-aws-hwe, linux-hwe, linux-kvm, linux-oracle, linux, linux-aws, linux-kvm, linux-lts-xenial, linux-aws-fips, linux-fips, linux-fips, and texlive-bin).CachyOS founder explains why they didn't join the new Open Gaming Collective (OGC) - GamingOnLinux Latest Articleshttps://www.gamingonlinux.com/2026/01/cachyos-founder-explains-why-they-didn-t-join-the-new-open-gaming-collective-ogc/2026-01-30T14:04:15.000ZThe Open Gaming Collective (OGC) was an interesting announcement recently from a few bigger names, but the CachyOS team opted out of it and now we know why.<p><img src="https://www.gamingonlinux.com/uploads/articles/tagline_images/2104927921id28411gol.jpg" alt /></p><p>Read the full article on <a href="https://www.gamingonlinux.com/2026/01/cachyos-founder-explains-why-they-didn-t-join-the-new-open-gaming-collective-ogc/">GamingOnLinux</a>.</p>GPD release their own statement on the confusion with Bazzite Linux support - GamingOnLinux Latest Articleshttps://www.gamingonlinux.com/2026/01/gpd-release-their-own-statement-on-the-confusion-with-bazzite-linux-support/2026-01-30T13:06:08.000ZIn the continuing saga of GPD versus Bazzite Linux, the GPD team have now posted their own statement on what happened.<p><img src="https://www.gamingonlinux.com/uploads/articles/tagline_images/1405882476id28410gol.jpg" alt /></p><p>Read the full article on <a href="https://www.gamingonlinux.com/2026/01/gpd-release-their-own-statement-on-the-confusion-with-bazzite-linux-support/">GamingOnLinux</a>.</p>More than half of gamedev professionals see GenAI as harmful, according to GDC’s latest survey - Rock Paper Shotgun Latest Articles Feedhttps://www.rockpapershotgun.com/more-than-half-of-gamedev-professionals-see-genai-as-harmful-according-to-gdcs-latest-survey2026-01-30T12:53:46.000Z<img src="https://assetsio.gnwcdn.com/ARC-Raiders-Screenshot.jpg?width=690&quality=85&format=jpg&auto=webp" /> <p>GDC have released their <a href="https://gdconf.com/article/gdc-2026-state-of-the-game-industry-reveals-impact-of-layoffs-generative-ai-and-more/">2026 State of the Game Industry report</a>, comprising survey results from thousands of quizzed developers on the craft and business of gamesmaking. As in the <a href="https://www.rockpapershotgun.com/almost-a-third-of-developers-think-generative-ai-is-a-negative-for-the-games-industry-says-new-survey">2025 report</a>, this year’s responses signal a growing discontent with <a href="https://www.rockpapershotgun.com/topics/ai">generative AI</a> tools, with opposing sentiments tipping into simple majority status for the first time: 52% now say GenAI is having a negative impact on the industry, up from 30% in 2025 and 18% in 2024.</p>
<p>Before we start celebrating the moral arc of the universe, this opinion-hardening appears to correlate with neither an overall decrease not increase in the <em>adoption</em> of GenAI tech. Asked if they or someone in their company used these tools, 52% said yes and 35% said no, both unchanged from their 2025 survey levels. However, optimistic views are becoming harder to come by, with the percentage of respondents who thought GenAI is having a positive impact dropping from 13% in 2025 to a mere 7% in 2026. Presumably that’s made up of <a href="https://www.rockpapershotgun.com/epic-ceo-wants-valve-and-steam-to-stop-requiring-devs-to-disclose-generative-ai-usage">Tim Sweeney</a>, <a href="https://www.rockpapershotgun.com/larian-boss-responds-to-criticism-of-generative-ai-use-its-something-we-are-constantly-discussing-internally">Larian’s Swen Vincke</a>, half the people on my LinkedIn feed, and that one dentist out of ten who doubts toothpaste.</p>
<p><a href="https://www.rockpapershotgun.com/more-than-half-of-gamedev-professionals-see-genai-as-harmful-according-to-gdcs-latest-survey">Read more</a></p>PSA: There's a free Fallout 4 mod for that Fallout Show NCR power armour Bethesda are charging $30 for as DLC - Rock Paper Shotgun Latest Articles Feedhttps://www.rockpapershotgun.com/psa-theres-a-free-fallout-4-mod-for-that-fallout-show-ncr-power-armour-bethesda-are-charging-30-for-as-dlc2026-01-30T12:52:56.000Z<img src="https://assetsio.gnwcdn.com/fallout-show-ncr-power-armour-fallout-76-paid-dlc-01.jpg?width=690&quality=85&format=jpg&auto=webp" /> <p>Right, so, <strong>spoiler alert</strong>: that NCR power armour which first appeared in the trailers for season two of Amazon's Fallout Show has finally made its grand entrance in the latest episode to drop. On cue, Bethesda have put out a <a href="https://www.rockpapershotgun.com/games/fallout-76">Fallout 76</a> DLC you can buy if you want to wear the armour for yourself in a Fallout game. Said DLC costs £26.99 / $30. In light of that, I'm here to quickly point out/remind folks that there's a free <a href="https://www.rockpapershotgun.com/games/fallout-4">Fallout 4</a> mod for the armour you can give a go if you fancy.</p>
<p><a href="https://www.rockpapershotgun.com/psa-theres-a-free-fallout-4-mod-for-that-fallout-show-ncr-power-armour-bethesda-are-charging-30-for-as-dlc">Read more</a></p>Check out the new suitably weird Mewgenics feature trailer - GamingOnLinux Latest Articleshttps://www.gamingonlinux.com/2026/01/check-out-the-new-suitably-weird-mewgenics-feature-trailer/2026-01-30T12:34:36.000ZMewgenics from Edmund McMillen and Tyler Glaiel is set for release on February 10th, and we have a fresh look at it in a new weird features trailer.<p><img src="https://www.gamingonlinux.com/uploads/articles/tagline_images/1722316456id28409gol.jpg" alt /></p><p>Read the full article on <a href="https://www.gamingonlinux.com/2026/01/check-out-the-new-suitably-weird-mewgenics-feature-trailer/">GamingOnLinux</a>.</p>World of Warcraft's getting a prop hunt mode, so you can pretend to be a chair during breaks from Midnight's voidpocalypse - Rock Paper Shotgun Latest Articles Feedhttps://www.rockpapershotgun.com/world-of-warcrafts-getting-a-prop-hunt-mode-so-you-can-pretend-to-be-a-chair-during-breaks-from-midnights-voidpocalypse2026-01-30T11:41:15.000Z<img src="https://assetsio.gnwcdn.com/world-of-warcraft-adding-prop-hunt-2026-roadmap.jpg?width=690&quality=85&format=jpg&auto=webp" /> <p>Well, <a href="https://www.rockpapershotgun.com/games/world-of-warcraft">World of Warcraft</a> developers Blizzard have decided to have a bit of extra fun with all the junk that'll fill up the new player houses rolling out in full with <a href="https://www.rockpapershotgun.com/world-of-warcrafts-midnight-expansion-releases-in-march-bringing-voidstorm-plague-on-all-the-new-houses">March's Midnight expansion</a>. The MMO's getting a prop hunt mode dubbed Decor Duel, designed to act as a "small diversion" from the whole Xal’atath-led void invasion business.</p>
<p><a href="https://www.rockpapershotgun.com/world-of-warcrafts-getting-a-prop-hunt-mode-so-you-can-pretend-to-be-a-chair-during-breaks-from-midnights-voidpocalypse">Read more</a></p>GDC 2026 Report - 36% of devs use generative AI, while 28% target Steam Deck and 8% Linux - GamingOnLinux Latest Articleshttps://www.gamingonlinux.com/2026/01/gdc-26-report-36-of-devs-use-generative-ai-while-28-target-steam-deck-and-8-linux/2026-01-30T10:53:59.000ZThe GDC 2026 State of the Game Industry report is out with "over 2,300" professionals in the industry surveyed, and here's some of the highlights from it.<p><img src="https://www.gamingonlinux.com/uploads/articles/tagline_images/2045883351id28407gol.jpg" alt /></p><p>Read the full article on <a href="https://www.gamingonlinux.com/2026/01/gdc-26-report-36-of-devs-use-generative-ai-while-28-target-steam-deck-and-8-linux/">GamingOnLinux</a>.</p>Yes, Paradox are aware that a “barrage of DLCs” can scare away new players, for all their bundles and discounts - Rock Paper Shotgun Latest Articles Feedhttps://www.rockpapershotgun.com/yes-paradox-are-aware-that-a-barrage-of-dlcs-can-scare-away-new-players-for-all-their-bundles-and-discounts2026-01-30T10:26:06.000Z<img src="https://assetsio.gnwcdn.com/hearts-of-iron-4-intelligence-agency.png?width=690&quality=85&format=jpg&auto=webp" /> <p>
If you’ve ever intrepidly looked up a Paradox game, seen a million DLC expansions on the Steam page, and fled screaming into the woods, rest assured that Paradox have you in their eye. It’s doubtful they’re going to change anything about their broad DLC strategy, mind, but they’re aware that some players may feel reluctant to purchase older Paradox games that have dozens of add-ons.
</p> <p><a href="https://www.rockpapershotgun.com/yes-paradox-are-aware-that-a-barrage-of-dlcs-can-scare-away-new-players-for-all-their-bundles-and-discounts">Read more</a></p>Yakuza Kiwami 3 & Dark Ties is getting a day one patch to ensure sunny Okinawa looks less deep fried - Rock Paper Shotgun Latest Articles Feedhttps://www.rockpapershotgun.com/yakuza-kiwami-3-dark-ties-is-getting-a-day-one-patch-to-ensure-sunny-okinawa-looks-less-deep-fried2026-01-30T09:48:04.000Z<img src="https://assetsio.gnwcdn.com/yakuza-kiwami-3-and-dark-ties-day-one-patch-visual-issues-01-(1).jpg?width=690&quality=85&format=jpg&auto=webp" /> <p>Ahead of <a href="https://www.rockpapershotgun.com/games/yakuza-kiwami-3-and-dark-ties">Yakuza Kiwami 3 & Dark Ties</a>' release on February 11th, devs RGG Studio have announced plans to put out a day one patch to fix visual issues spotted the remade beat-em-up's demo. Specifically, there's a section of the game's version of downtown Okinawa by a river which players have pointed out to be garishly oversaturated compared to the original Yakuza 3 and its previous remaster.</p>
<p><a href="https://www.rockpapershotgun.com/yakuza-kiwami-3-dark-ties-is-getting-a-day-one-patch-to-ensure-sunny-okinawa-looks-less-deep-fried">Read more</a></p>