<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet href="/assets/atom.xsl" type="text/xsl"?><feed
	xmlns="http://www.w3.org/2005/Atom"
	xmlns:thr="http://purl.org/syndication/thread/1.0"
	xml:lang="en-US"
	><title>Sacha Chua - category - stream</title>
	<subtitle>Emacs, sketches, and life</subtitle>
	<link rel="self" type="application/atom+xml" href="https://sachachua.com/blog/category/stream/feed/atom/index.xml" />
  <link rel="alternate" type="text/html" href="https://sachachua.com/blog/category/stream" />
  <id>https://sachachua.com/blog/category/stream/feed/atom/index.xml</id>
  <generator uri="https://11ty.dev">11ty</generator>
	<updated>2026-04-06T14:36:57Z</updated>
<entry>
		<title type="html">YE12: Categorizing Emacs News, epwgraph, languages</title>
		<link rel="alternate" type="text/html" href="https://sachachua.com/blog/2026/04/ye12-categorizing-emacs-news-epwgraph-languages/"/>
		<author><name><![CDATA[Sacha Chua]]></name></author>
		<updated>2026-04-06T14:36:57Z</updated>
    <published>2026-04-06T14:36:57Z</published>
    <category term="emacs" />
<category term="stream" />
<category term="yay-emacs" />
		<id>https://sachachua.com/blog/2026/04/ye12-categorizing-emacs-news-epwgraph-languages/</id>
		<content type="html"><![CDATA[<p>
<video controls="1" src="https://archive.org/download/2026-04-06-ye-12-emacs-news-epwgraph-languages/2026-04-06-ye12-emacs-news-epwgraph-languages.mp4" type="video/mp4"></video>
</p>

<p>
<a href="https://archive.org/details/2026-04-06-ye-12-emacs-news-epwgraph-languages">View in the Internet Archive</a>, <a href="https://youtube.com/live/zMcyTAOG0i8">watch or comment on YouTube</a>, or <a href="mailto:sacha@sachachua.com">email me</a>.
</p>

<p>
Chapters:
</p>

<ul class="org-ul">
<li><span class="media-time" data-start="2481.000">00:41:21</span> epwgraph</li>
<li><span class="media-time" data-start="3296.000">00:54:56</span> learning languages</li>
</ul>

<p>
Thanks for your patience with the audio issues! At some point, I need to work out the contention between all the different processes that I want to be listening to the audio from my mic. =)
</p>

<p>
In this livestream, I categorize <a href="https://sachachua.com/blog/2026/04/2026-04-06-emacs-news/">Emacs News for 2026-04-06</a>, show <a href="https://github.com/sachac/epwgraph">epwgraph</a> for managing Pipewire connections from Emacs, and share some of my <a href="https://codeberg.org/sachac/learn-lang/">language learning workflows</a>.
</p>
<div><a href="https://sachachua.com/blog/2026/04/ye12-categorizing-emacs-news-epwgraph-languages/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%2F04%2Fye12-categorizing-emacs-news-epwgraph-languages%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>]]></content>
		</entry><entry>
		<title type="html">YE11: Fix find-function for Emacs Lisp from org-babel or scratch</title>
		<link rel="alternate" type="text/html" href="https://sachachua.com/blog/2026/04/ye11-fix-find-function-for-emacs-lisp-from-org-babel-or-scratch/"/>
		<author><name><![CDATA[Sacha Chua]]></name></author>
		<updated>2026-04-05T21:03:48Z</updated>
    <published>2026-04-05T21:03:48Z</published>
    <category term="org" />
<category term="emacs" />
<category term="elisp" />
<category term="stream" />
<category term="yay-emacs" />
		<id>https://sachachua.com/blog/2026/04/ye11-fix-find-function-for-emacs-lisp-from-org-babel-or-scratch/</id>
		<content type="html"><![CDATA[<p>
<video controls="1" src="https://archive.org/download/yay-emacs-11-fix-find-function-for-emacs-lisp-from-org-babel-or-scratch/ye11-find-function.mp4" poster="https://sachachua.com/blog/2026/04/ye11-fix-find-function-for-emacs-lisp-from-org-babel-or-scratch/2026-04-05-19-25-03.png" type="video/mp4"><track kind="subtitles" label="Captions" src="https://sachachua.com/blog/2026/04/ye11-fix-find-function-for-emacs-lisp-from-org-babel-or-scratch/Yay%20Emacs%2011:%20Fix%20find-function%20for%20Emacs%20Lisp%20from%20org-babel%20or%20scratch.vtt" srclang="en" default=""><span>Video not supported. Thumbnail:<br><img src="https://sachachua.com/blog/2026/04/ye11-fix-find-function-for-emacs-lisp-from-org-babel-or-scratch/2026-04-05-19-25-03.png" alt="Thumbnail"></span></video>
</p>

<p>
<a href="https://archive.org/details/yay-emacs-11-fix-find-function-for-emacs-lisp-from-org-babel-or-scratch">Watch on Internet Archive</a>, <a href="https://youtube.com/live/PKkV1Tbev_Y">watch/comment on YouTube</a>, <a href="https://sachachua.com/blog/2026/04/ye11-fix-find-function-for-emacs-lisp-from-org-babel-or-scratch/Yay%20Emacs%2011:%20Fix%20find-function%20for%20Emacs%20Lisp%20from%20org-babel%20or%20scratch.vtt">download captions</a>, or <a href="mailto:sacha@sachachua.com">email me</a>
</p>


<p>
Where can you define an Emacs Lisp function so
that you can use <code>find-function</code> to jump to it
again later?
</p>

<ul class="org-ul">
<li><b>A: In an indirect buffer</b> from Org Mode source
block with your favorite eval function like
<code>eval-defun</code> <label class="hint"><input type="checkbox"> <span class="hint-desc">(hint)</span><span class="hint-text">nope</span></label>

<ul class="org-ul">
<li><p>
<code>C-c '</code> (<code>org-edit-special</code>) inside the block; execute the defun with <code>C-M-x</code> (<code>eval-defun</code>), <code>C-x C-e</code> (<code>eval-last-sexp</code>), or <code>eval-buffer</code>.
</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-test-1</span> () (message <span class="org-string">"Hello"</span>))
</code></pre>
</div>
</li>
</ul></li>

<li><p>
<b>B: In an Org Mode file</b> by executing the block
with C-c C-c <label class="hint"><input type="checkbox"> <span class="hint-desc">(hint)</span><span class="hint-text">nope</span></label>
</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-test-2</span> () (message <span class="org-string">"Hello"</span>))
</code></pre>
</div>
</li>

<li><p>
<b>C: In a .el file</b> <label class="hint"><input type="checkbox"> <span class="hint-desc">(hint)</span><span class="hint-text">yup</span></label>
</p>

<p>
<a href="https://sachachua.com/blog/2026/04/ye11-fix-find-function-for-emacs-lisp-from-org-babel-or-scratch/test-search-function.el">file:///tmp/test-search-function.el</a> : execute the defun with <code>C-M-x</code> (<code>eval-defun</code>), <code>C-x C-e</code> (<code>eval-last-sexp</code>), or <code>eval-buffer</code>
</p></li>

<li><p>
<b>D: In a scratch buffer,</b> other temporary buffer,
or really any buffer thanks to eval-last-sexp
<label class="hint"><input type="checkbox"> <span class="hint-desc">(hint)</span><span class="hint-text">nope</span></label>
</p>

<p>
<code>(defun my-test-4 () (message "Hello"))</code>
</p></li>
</ul>

<p>
Only option C works - it's gotta be in an .el file for
<code>find-function</code> to find it. But I love jumping to
function definitions using <code>find-function</code> or
<code>lispy-goto-symbol</code> (which is bound to <code>M-.</code> if
you use <a target="_blank" href="https://melpa.org/#/lispy">lispy</a> and set up <code>lispy-mode</code>) so
that I can look at or change how something works.
It can be a little frustrating when I try to jump
to a definition and it says, "Don't know where
blahblahblah is defined." I just defined it five
minutes ago! It's there in one of my other
buffers, don't make me look for it myself.
Probably this will get fixed in Emacs core
someday, but no worries, we can work around it
today with a little bit of advice.
</p>

<p>
I did some digging around in the source code.
Turns out that <code>symbol-file</code> can't find the
function definition in the <code>load-history</code> variable
if you're not in a .el file, so
<code>find-function-search-for-symbol</code> gets called with
<code>nil</code> for the library, which causes the error.
(<a href="https://github.com/emacs-mirror/emacs/blob/master/lisp/subr.el">emacs:subr.el</a>)
</p>

<p>
I wrote some advice that searches in any open
<code>emacs-lisp-mode</code> buffers or in a list of other
files, like my Emacs configuration.
This is how I activate it:
</p>


<div class="org-src-container">
<pre class="src src-emacs-lisp"><code>(<span class="org-keyword">setq</span> sacha-elisp-find-function-search-extra <span class="org-highlight-quoted-quote">'</span>(<span class="org-string">"~/sync/emacs/Sacha.org"</span>))
(advice-add <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">find-function-search-for-symbol</span> <span class="org-builtin">:around</span> <span class="org-highlight-quoted-quote">#'</span><span class="org-highlight-quoted-symbol">sacha-elisp-find-function-search-for-symbol</span>)
</code></pre>
</div>


<p>
Now I should be able to jump to all those
functions wherever they're defined.
</p>


<div class="org-src-container">
<pre class="src src-emacs-lisp"><code>(my-test-1)
(my-test-2)
(my-test-3)
(my-test-4)
</code></pre>
</div>


<p>
Note that by default, <code>M-.</code> in <code>emacs-lisp-mode</code> uses <code>xref-find-definitions</code>, which seems to really want files. I haven't figured out a good workaround for that yet, but <a target="_blank" href="https://melpa.org/#/lispy">lispy-mode</a> makes <code>M-.</code> work and gives me a bunch of other great shortcuts, so I'd recommend checking that out.
</p>

<p>
Here's the source code for the find function thing:
</p>


<div class="org-src-container">
<pre class="src src-emacs-lisp"><code>(<span class="org-keyword">defvar</span> <span class="org-variable-name">sacha-elisp-find-function-search-extra</span>
  nil
  <span class="org-doc">"List of filenames to search for functions."</span>)

<span class="org-comment-delimiter">;;;</span><span class="org-comment">###</span><span class="org-comment"><span class="org-warning">autoload</span></span>
(<span class="org-keyword">defun</span> <span class="org-function-name">sacha-elisp-find-function-search-for-symbol</span> (fn symbol type library <span class="org-type">&amp;rest</span> _)
  <span class="org-doc">"Find SYMBOL with TYPE in Emacs Lisp buffers or `</span><span class="org-doc"><span class="org-constant">sacha-find-function-search-extra</span></span><span class="org-doc">'.</span>
<span class="org-doc">Prioritize buffers that do not have associated files, such as Org Src</span>
<span class="org-doc">buffers or *scratch*. Note that the fallback search uses \"^([</span><span class="org-doc"><span class="org-negation-char">^</span></span><span class="org-doc"> )]+\" so that</span>
<span class="org-doc">it isn't confused by preceding forms.</span>

<span class="org-doc">If LIBRARY is specified, fall back to FN.</span>

<span class="org-doc">Activate this with:</span>

<span class="org-doc">(advice-add 'find-function-search-for-symbol</span>
<span class="org-doc"> :around #'sacha-org-babel-find-function-search-for-symbol-in-dotemacs)"</span>
  (<span class="org-keyword">if</span> (null library)
      <span class="org-comment-delimiter">;; </span><span class="org-comment">Could not find library; search my-dotemacs-file just in case</span>
      (<span class="org-keyword">progn</span>
        (<span class="org-keyword">while</span> (<span class="org-keyword">and</span> (symbolp symbol) (get symbol <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">definition-name</span>))
          (<span class="org-keyword">setq</span> symbol (get symbol <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">definition-name</span>)))
        (<span class="org-keyword">catch</span> <span class="org-highlight-quoted-quote">'</span><span class="org-constant">found</span>
          (mapc
           (<span class="org-keyword">lambda</span> (buffer-or-file)
             (<span class="org-keyword">with-current-buffer</span> (<span class="org-keyword">if</span> (bufferp buffer-or-file)
                                      buffer-or-file
                                    (find-file-noselect buffer-or-file))
               (<span class="org-keyword">let*</span> ((regexp-symbol
                       (<span class="org-keyword">or</span> (<span class="org-keyword">and</span> (symbolp symbol)
                                (alist-get type (get symbol <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">find-function-type-alist</span>)))
                           (alist-get type find-function-regexp-alist)))
                      (form-matcher-factory
                       (<span class="org-keyword">and</span> (functionp (cdr-safe regexp-symbol))
                            (cdr regexp-symbol)))
                      (regexp-symbol (<span class="org-keyword">if</span> form-matcher-factory
                                         (car regexp-symbol)
                                       regexp-symbol))

                      (case-fold-search)
                      (regexp (<span class="org-keyword">if</span> (functionp regexp-symbol) regexp-symbol
                                (format (symbol-value regexp-symbol)
                                        <span class="org-comment-delimiter">;; </span><span class="org-comment">Entry for ` (backquote) macro in loaddefs.el,</span>
                                        <span class="org-comment-delimiter">;; </span><span class="org-comment">(defalias (quote \`)..., has a \ but</span>
                                        <span class="org-comment-delimiter">;; </span><span class="org-comment">(symbol-name symbol) doesn't.  Add an</span>
                                        <span class="org-comment-delimiter">;; </span><span class="org-comment">optional \ to catch this.</span>
                                        (concat <span class="org-string">"\\\\?"</span>
                                                (regexp-quote (symbol-name symbol)))))))
                 (<span class="org-keyword">save-restriction</span>
                   (widen)
                   (<span class="org-keyword">with-syntax-table</span> emacs-lisp-mode-syntax-table
                     (goto-char (point-min))
                     (<span class="org-keyword">if</span> (<span class="org-keyword">if</span> (functionp regexp)
                             (funcall regexp symbol)
                           (<span class="org-keyword">or</span> (re-search-forward regexp nil t)
                               <span class="org-comment-delimiter">;; </span><span class="org-comment">`</span><span class="org-comment"><span class="org-constant">regexp</span></span><span class="org-comment">' matches definitions using known forms like</span>
                               <span class="org-comment-delimiter">;; </span><span class="org-comment">`</span><span class="org-comment"><span class="org-constant">defun</span></span><span class="org-comment">', or `</span><span class="org-comment"><span class="org-constant">defvar</span></span><span class="org-comment">'.  But some functions/variables</span>
                               <span class="org-comment-delimiter">;; </span><span class="org-comment">are defined using special macros (or functions), so</span>
                               <span class="org-comment-delimiter">;; </span><span class="org-comment">if `</span><span class="org-comment"><span class="org-constant">regexp</span></span><span class="org-comment">' can't find the definition, we look for</span>
                               <span class="org-comment-delimiter">;; </span><span class="org-comment">something of the form "(SOMETHING &lt;symbol&gt; ...)".</span>
                               <span class="org-comment-delimiter">;; </span><span class="org-comment">This fails to distinguish function definitions from</span>
                               <span class="org-comment-delimiter">;; </span><span class="org-comment">variable declarations (or even uses thereof), but is</span>
                               <span class="org-comment-delimiter">;; </span><span class="org-comment">a good pragmatic fallback.</span>
                               (re-search-forward
                                (concat <span class="org-string">"^([</span><span class="org-string"><span class="org-negation-char">^</span></span><span class="org-string"> )]+"</span> find-function-space-re <span class="org-string">"['(]?"</span>
                                        (regexp-quote (symbol-name symbol))
                                        <span class="org-string">"\\_&gt;"</span>)
                                nil t)))
                         (<span class="org-keyword">progn</span>
                           (beginning-of-line)
                           (<span class="org-keyword">throw</span> <span class="org-highlight-quoted-quote">'</span><span class="org-constant">found</span>
                                   (cons (current-buffer) (point))))
                       (<span class="org-keyword">when-let*</span> ((find-expanded
                                    (<span class="org-keyword">when</span> (trusted-content-p)
                                      (find-function&#45;&#45;search-by-expanding-macros
                                       (current-buffer) symbol type
                                       form-matcher-factory))))
                         (<span class="org-keyword">throw</span> <span class="org-highlight-quoted-quote">'</span><span class="org-constant">found</span>
                                 (cons (current-buffer)
                                       find-expanded)))))))))
           (delq nil
                 (append
                  (sort
                   (match-buffers <span class="org-highlight-quoted-quote">'</span>(derived-mode . emacs-lisp-mode))
                   <span class="org-builtin">:key</span> (<span class="org-keyword">lambda</span> (o) (<span class="org-keyword">or</span> (buffer-file-name o) <span class="org-string">""</span>)))
                  sacha-elisp-find-function-search-extra)))))
    (funcall fn symbol type library)))
</code></pre>
</div>


<p>
I even figured out how to <span title="(ignore (ert &quot;sacha-elisp&#45;&#45;find-function-search-for-symbol&#45;&#45;.*&quot;))">write tests for it</span>:
</p>


<div class="org-src-container">
<pre class="src src-emacs-lisp"><code>(<span class="org-keyword">ert-deftest</span> <span class="org-function-name">sacha-elisp&#45;&#45;find-function-search-for-symbol&#45;&#45;in-buffer</span> ()
  (<span class="org-keyword">let</span> ((sym (make-temp-name <span class="org-string">"&#45;&#45;test-fn"</span>))
        buffer)
    (<span class="org-keyword">unwind-protect</span>
        (<span class="org-keyword">with-temp-buffer</span>
          (emacs-lisp-mode)
          (insert (format <span class="org-string">";; Comment\n(defun %s () (message \"Hello\"))"</span> sym))
          (eval-last-sexp nil)
          (<span class="org-keyword">setq</span> buffer (current-buffer))
          (<span class="org-keyword">with-temp-buffer</span>
            (<span class="org-keyword">let</span> ((pos (sacha-elisp-find-function-search-for-symbol nil (intern sym) nil nil)))
              (<span class="org-keyword">should</span> (equal (car pos) buffer))
              (<span class="org-keyword">should</span> (equal (cdr pos) 12)))))
      (fmakunbound (intern sym)))))

(<span class="org-keyword">ert-deftest</span> <span class="org-function-name">sacha-elisp&#45;&#45;find-function-search-for-symbol&#45;&#45;in-file</span> ()
  (<span class="org-keyword">let*</span> ((sym (make-temp-name <span class="org-string">"&#45;&#45;test-fn"</span>))
         (temp-file (make-temp-file
                     <span class="org-string">"test-"</span> nil <span class="org-string">".org"</span>
                     (format
                      <span class="org-string">"#+begin_src emacs-lisp\n;; Comment\n(defun %s () (message \"Hello\"))\n#+end_src"</span>
                      sym)))
         (sacha-elisp-find-function-search-extra (list temp-file))
         buffer)
    (<span class="org-keyword">unwind-protect</span>
        (<span class="org-keyword">with-temp-buffer</span>
          (<span class="org-keyword">let</span> ((pos (sacha-elisp-find-function-search-for-symbol nil (intern sym) nil nil)))
            (<span class="org-keyword">should</span> (equal (buffer-file-name (car pos)) temp-file))
            (<span class="org-keyword">should</span> (equal (cdr pos) 35))))
      (delete-file temp-file))))
</code></pre>
</div>


<div class="note">This is part of my <a href="https://sachachua.com/dotemacs#org-mode-org-babel-fix-find-function-when-i-ve-evaluated-something-from-org-babel">Emacs configuration.</a></div><div><a href="https://sachachua.com/blog/2026/04/ye11-fix-find-function-for-emacs-lisp-from-org-babel-or-scratch/index.org">View Org source for this post</a></div><p>You can <a href="https://social.sachachua.com/@sacha/statuses/01KNFTFSC3D0K7XH1JW1XTF6QG" target="_blank" rel="noopener noreferrer">comment on Mastodon</a> or <a href="mailto:sacha@sachachua.com?subject=Comment%20on%20https%3A%2F%2Fsachachua.com%2Fblog%2F2026%2F04%2Fye11-fix-find-function-for-emacs-lisp-from-org-babel-or-scratch%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>]]></content>
		</entry><entry>
		<title type="html">Emacs Carnival February 2026: Completion</title>
		<link rel="alternate" type="text/html" href="https://sachachua.com/blog/2026/01/emacs-carnival-february-2026-completion/"/>
		<author><name><![CDATA[Sacha Chua]]></name></author>
		<updated>2026-02-16T19:51:01Z</updated>
    <published>2026-01-30T16:41:18Z</published>
    <category term="stream" />
<category term="emacs" />
		<id>https://sachachua.com/blog/2026/01/emacs-carnival-february-2026-completion/</id>
		<content type="html"><![CDATA[<div class="update" id="org715405a">
<ul class="org-ul">
<li><span class="timestamp-wrapper"><time class="timestamp" datetime="2026-03-01">[2026-03-01 Sun]</time></span>: Added <a href="https://jneidel.com/dev/hugo-links/">jneidel's</a> link back, and added <a href="https://johnrakestraw.com/post/emacs-carnival-completion-in-beancount-plain-text-accounting/">John's</a> link</li>
<li><span class="timestamp-wrapper"><time class="timestamp" datetime="2026-02-28">[2026-02-28 Sat]</time></span>: Added posts by <a href="https://www.matem.unam.mx/~omar/apropos-emacs.html#exploring-data-with-completion">oantolin</a> and <a href="https://commonplace.doubleloop.net/emacs-carnival-completion">Neil</a>. Also added a ton of <a href="https://sachachua.com/blog/2026/01/emacs-carnival-february-2026-completion/#emacs-carnival-february-2026-completion-links-and-ideas">links</a> from previous Emacs News posts. Added <a href="https://www.gonsie.com/blorg/org-completion-feb26-carnival.html">Elsa's post</a></li>
<li><span class="timestamp-wrapper"><time class="timestamp" datetime="2026-02-27">[2026-02-27 Fri]</time></span>: Added <a href="https://christiantietze.de/posts/2026/02/complete-feedback-loop-in-emacs/">Christian's post</a></li>
<li><span class="timestamp-wrapper"><time class="timestamp" datetime="2026-02-26">[2026-02-26 Thu]</time></span>: Added my post, <a href="https://macadie.info/2026/02/26/emacs-carnival-completion/">Eric's post</a>, and <a href="https://codeberg.org/eludom/home.public.notes/src/branch/master/home/public/notes/ai/20260226T090319&#45;&#45;chat-emacs-completions__public_tech.org">George's post</a></li>
<li><span class="timestamp-wrapper"><time class="timestamp" datetime="2026-02-19">[2026-02-19 Thu]</time></span>: Added post by jneidel</li>
<li><span class="timestamp-wrapper"><time class="timestamp" datetime="2026-02-16">[2026-02-16 Mon]</time></span>: <a href="https://howardism.org/Technical/Emacs/alt-completing-read.html">Added Howard's post</a></li>
</ul>

</div>

<div class="sticky-toc" id="org9a7f09a">
<div id="text-table-of-contents" role="doc-toc">
<ul>
<li><a href="https://sachachua.com/blog/feed/atom/index.xml#emacs-carnival-february-2026-completion-people-s-posts">People's posts!</a></li>
<li><a href="https://sachachua.com/blog/feed/atom/index.xml#emacs-carnival-february-2026-completion-first-what-s-the-emacs-carnival">First, what's the Emacs Carnival?</a></li>
<li><a href="https://sachachua.com/blog/feed/atom/index.xml#emacs-carnival-february-2026-completion-what-do-we-mean-by-completion-in-emacs">What do we mean by completion in Emacs?</a></li>
<li><a href="https://sachachua.com/blog/feed/atom/index.xml#emacs-carnival-february-2026-completion-links-and-ideas">Links and ideas</a></li>
<li><a href="https://sachachua.com/blog/feed/atom/index.xml#emacs-carnival-february-2026-completion-things-i-want-to-learn-about">Things I want to learn about</a></li>
<li><a href="https://sachachua.com/blog/feed/atom/index.xml#emacs-carnival-february-2026-completion-how-to-submit-your-entry-entries">How to submit your entry/entries</a></li>
<li><a href="https://sachachua.com/blog/feed/atom/index.xml#emacs-carnival-february-2026-completion-a-reflection-on-hosting-emacs-carnival-this-month">A reflection on hosting Emacs Carnival this month</a></li>
</ul>
</div>

</div>

<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-emacs-carnival-february-2026-completion-people-s-posts" class="outline-3">
<h3 id="emacs-carnival-february-2026-completion-people-s-posts">People's posts!</h3>
<div class="outline-text-3" id="text-emacs-carnival-february-2026-completion-people-s-posts">
<ul class="org-ul">
<li><a href="https://arjenwiersma.nl/completion-in-emacs-hledger">Completion (in Emacs hledger) — Arjen Wiersma</a></li>
<li><a href="https://mike.hostetlerhome.com/emacs-carnival-completion">Emacs Carnival: Completion — Where Are The Wise Men? - Mike Hostetler</a></li>
<li><a href="https://dolzhenko.me/blog/2026/02/file-name-completion-in-emacs/">File name completion in Emacs - Dmitry Dolzhenko</a></li>
<li><a href="https://cleberg.net/blog/emacs-carnival-2026-02-completion.html">Emacs Carnival: "Completion" - Christian Cleberg</a></li>
<li><a href="https://howardism.org/Technical/Emacs/alt-completing-read.html">An Alternate Completing Read - Howard Abrams</a></li>
<li><a href="https://jneidel.com/guide/emacs-completion/">Guide to Modern Emacs Completion: vertico, corfu &amp; friends - jneidel</a></li>
<li><a href="http://sachachua.com/blog/2026/02/sorting-completion-candidates-such-as-sorting-org-headings-by-level/">Sorting completion candidates, such as sorting Org headings by level - Sacha Chua</a></li>
<li><a href="https://macadie.info/2026/02/26/emacs-carnival-completion/">Emacs Carnival: Completion – Eric MacAdie</a></li>
<li><a href="https://codeberg.org/eludom/home.public.notes/src/branch/master/home/public/notes/ai/20260226T090319&#45;&#45;chat-emacs-completions__public_tech.org">CHAT emacs completions - George Jones</a></li>
<li><a href="https://sachachua.com/blog/2026/02/emacs-completion-and-handling-accented-characters-with-orderless/">Emacs completion and handling accented characters with orderless - Sacha Chua</a></li>
<li><a href="https://sachachua.com/blog/2026/02/using-speech-recognition-for-on-the-fly-translations-in-emacs-and-faking-in-buffer-completion-for-the-results/">Using speech recognition for on-the-fly translations in Emacs and faking in-buffer completion for the results - Sacha Chua</a></li>
<li><a href="https://www.matem.unam.mx/~omar/apropos-emacs.html#exploring-data-with-completion">Exploring large amounts of data with completion - Omar Antolin</a></li>
<li><a href="https://commonplace.doubleloop.net/emacs-carnival-completion">Emacs Carnival: Completion - Neil</a></li>
<li><a href="https://www.gonsie.com/blorg/org-completion-feb26-carnival.html">Emacs Carnival: Org Mode Completions - Elsa Gonsiorowski</a></li>
<li><a href="https://jneidel.com/dev/hugo-links/">Completion of hugo links in Emacs - jneidel</a></li>
<li><a href="https://johnrakestraw.com/post/emacs-carnival-completion-in-beancount-plain-text-accounting/">Emacs Carnival: Completion in Beancount Plain Text Accounting - John Rakestraw</a></li>
</ul>

<p>
Also, this one about completing the loop:
</p>

<ul class="org-ul">
<li><a href="https://christiantietze.de/posts/2026/02/complete-feedback-loop-in-emacs/">Emacs Complete: Feedback Loops in Emacs, Feedback Loops in Computing • Christian Tietze</a></li>
</ul>
</div>
</div>
<div id="outline-container-emacs-carnival-february-2026-completion-first-what-s-the-emacs-carnival" class="outline-3">
<h3 id="emacs-carnival-february-2026-completion-first-what-s-the-emacs-carnival">First, what's the Emacs Carnival?</h3>
<div class="outline-text-3" id="text-emacs-carnival-february-2026-completion-first-what-s-the-emacs-carnival">
<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 <a href="https://www.emacswiki.org/emacs/Carnival">Emacs Carnivals</a> 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&hellip;"</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-emacs-carnival-february-2026-completion-what-do-we-mean-by-completion-in-emacs" class="outline-3">
<h3 id="emacs-carnival-february-2026-completion-what-do-we-mean-by-completion-in-emacs">What do we mean by completion in Emacs?</h3>
<div class="outline-text-3" id="text-emacs-carnival-february-2026-completion-what-do-we-mean-by-completion-in-emacs">
<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><p>
<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. For lots of tips, check out <a href="https://www.masteringemacs.org/article/understanding-minibuffer-completion">Understanding Minibuffer Completion - Mastering Emacs</a>.
</p>

<p>
For example, here's my minibuffer for <code>M-x</code> using <a href="https://github.com/minad/vertico">vertico</a> for the display and <a href="https://github.com/minad/marginalia">marginalia</a> for annotations on the side:
</p>


<figure id="orgcee0390">
<a href="https://sachachua.com/blog/2026/01/emacs-carnival-february-2026-completion/2026-01-30_12-44-23.png"><img src="https://sachachua.com/blog/2026/01/emacs-carnival-february-2026-completion/2026-01-30_12-44-23.png" alt="2026-01-30_12-44-23.png"></a>

<figcaption><span class="figure-number">Figure 1: </span>Screenshot of minibuffer completion</figcaption>
</figure></li>

<li><p>
<b>in-buffer completion,</b> like when you expand an abbreviation, insert a snippet, or fill in the rest of a variable name.
</p>


<figure id="org1007813">
<a href="https://sachachua.com/blog/2026/01/emacs-carnival-february-2026-completion/2026-01-30_14-17-45.png"><img src="https://sachachua.com/blog/2026/01/emacs-carnival-february-2026-completion/2026-01-30_14-17-45.png" alt="2026-01-30_14-17-45.png"></a>

<figcaption><span class="figure-number">Figure 2: </span>Screenshot of in-buffer completion</figcaption>
</figure></li>
</ul>
</div>
</div>
<div id="outline-container-emacs-carnival-february-2026-completion-links-and-ideas" class="outline-3">
<h3 id="emacs-carnival-february-2026-completion-links-and-ideas">Links and ideas</h3>
<div class="outline-text-3" id="text-emacs-carnival-february-2026-completion-links-and-ideas">
<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! (Update 2026-02-28: All right, let me try squeezing in hundreds of links from the past few years of Emacs News. 9:29 PM I think it's going to take me more time and patience to go through these links. Anyway, enjoy this rough categorization for starters!)
</p>

<ul class="org-ul">
<li>Overviews
<ul class="org-ul">
<li><a href="https://www.youtube.com/watch?v=fnE0lXoe7Y0">Emacs Completion Explained</a> (1:30:49, 2022)</li>
<li><a href="https://www.youtube.com/watch?v=ze1J7MG0sFg">Is the Default Emacs Completion UI Good? - System Crafters Live!</a> (01:53:35, 2025, <a href="https://systemcrafters.net/live-streams/july-18-2025/">show notes</a>)</li>
<li><a href="https://www.youtube.com/watch?v=-MhSXU6Tx28">The Latest in Emacs Completions - System Crafters Live!</a> (02:00:25, 2023)</li>
<li><a href="https://utcc.utoronto.ca/~cks/space/blog/programming/EmacsUnderstandingCompletion">My understanding of various sorts of completion in GNU Emacs</a> (2023)</li>
<li><a href="https://www.reddit.com/r/emacs/comments/1jgmw36/emacs_completion_changed_my_life/">Emacs completion changed my life</a> (<a href="https://irreal.org/blog/?p=12866">Irreal</a>)</li>
<li><a href="https://readingworldmagazine.com/emacs/2021-12-25-how-to-get-files-from-your-computer-with-emacs-1/">yuri tricys: How to Get Files From Your Computer With Emacs</a> (2021) - ido, ivy, smex</li>
</ul></li>
<li><b>Minibuffer completion</b>
<ul class="org-ul">
<li>General minibuffer UI resources and discussions
<ul class="org-ul">
<li><a href="https://www.masteringemacs.org/article/understanding-minibuffer-completion">Understanding Minibuffer Completion - Mastering Emacs</a></li>
<li><a href="https://www.youtube.com/watch?v=w9hHMDyF9V4">Emacs Minibuffer Completions</a> (23:08, 2022)</li>
<li><a href="https://www.reddit.com/r/emacs/comments/n40lk8/poll_whats_your_ideal_minibuffer_completion_ui/">[POLL] What's your ideal minibuffer completion UI?</a></li>
<li><a href="https://manueluberti.eu/posts/2023-02-25-switch-to-minibuffer/">Manuel Uberti: Jump to minibuffer from completions</a> - binding switch-to-minibuffer</li>
<li><a href="https://www.reddit.com/r/emacs/comments/1hln9sl/you_can_press_spc_in_the_mx_minibuffer_instead_of/">You can press SPC in the M-x minibuffer instead of "-".</a></li>
</ul></li>
<li><p>
Have you explored the built-in completion improvements in recent Emacs versions? <a href="https://www.gnu.org/software/emacs/manual/html_node/emacs/Icomplete.html">Fido-mode</a>, <a href="http://xahlee.info/emacs/emacs/emacs_fido_mode.html">icomplete-vertical-mode</a>, and the <code>*Completions*</code> buffer have all gotten much better recently.
</p>
<details class="code-details" style="padding: 1em;
                 border-radius: 15px;
                 font-size: 0.9em;
                 box-shadow: 0.05em 0.1em 5px 0.01em  #00000057;">
                  <summary><strong>Resources</strong></summary>
<ul class="org-ul">
<li><a href="https://thanosapollo.org/posts/emacs-built-in-completions-video/">Thanos Apollo: Emacs 30 Built-in Completion UI &amp; Styles [Video]​</a> (2024, <a href="https://www.reddit.com/r/planetemacs/comments/1hcx1l0/thanos_apollo_emacs_30_builtin_completion_ui/">Reddit</a>)</li>
<li><a href="https://manueluberti.eu/posts/2021-08-06-fido/">Manuel Uberti: Trust me, I complete</a> - fido-vertical-mode</li>
<li><a href="https://robbmann.io/posts/emacs-29-completions/">The *​Completions* Buffer Gets a Big Upgrade in Emacs 29</a> (<a href="https://www.reddit.com/r/emacs/comments/104xot6/the_completions_buffer_gets_a_big_upgrade_in/">Reddit</a>, <a href="https://irreal.org/blog/?p=11064">Irreal</a>,  <a href="https://manueluberti.eu/posts/2023-01-12-completions/">Manuel Uberti</a>)</li>
<li><a href="https://www.scss.tcd.ie/~sulimanm/posts/default-emacs-completion.html">(Me) Default emacs completions are good, I swear!</a> (<a href="https://www.reddit.com/r/emacs/comments/xz6oq8/me_default_emacs_completions_are_good_i_swear/">Reddit</a>)</li>
<li><a href="https://www.youtube.com/watch?v=Lul2XrHhTUg">emacs 28, icomplete, fido, replaces ido, and smex</a> (54:30, 2022)</li>
<li><a href="https://www.reddit.com/r/emacs/comments/iaqlpk/fidomode_in_emacs_27/">fido-mode in Emacs 27</a></li>
<li><a href="https://www.rahuljuliato.com/posts/in-buffer-icomplete-2">Enhancing icomplete-vertical-mode in Emacs: A Follow-Up</a> (<a href="https://www.reddit.com/r/emacs/comments/1i8loza/enhancing_icompleteverticalmode_in_emacs_a/">Reddit</a>)</li>
</ul></details></li>
</ul></li>
</ul>



<ul class="org-ul">
<li><p>
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>, <a href="https://github.com/minad/vertico">vertico</a>, or <a href="https://protesilaos.com/codelog/2021-10-22-emacs-mct-demo/">mct</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!
</p>
<details class="code-details" style="padding: 1em;
                 border-radius: 15px;
                 font-size: 0.9em;
                 box-shadow: 0.05em 0.1em 5px 0.01em  #00000057;">
                  <summary><strong>Lots of Vertico links</strong></summary>
<ul class="org-ul">
<li><a href="https://midirus.com/blog/from-ivy-to-vertico">From Ivy To Vert&amp;co – Tristan's Zettelkasten</a></li>
<li><a href="https://manueluberti.eu/posts/2021-04-12-vertico/">Manuel Uberti: Would Alfred Hitchcock use Emacs?</a> - about vertico, vertical interactive completion</li>
<li><a href="https://utcc.utoronto.ca/~cks/space/blog/programming/EmacsVerticoSettingsNotes">My GNU Emacs settings for the vertico package (as of mid 2025)</a> (<a href="https://www.reddit.com/r/emacs/comments/1kxibr1/my_gnu_emacs_settings_for_the_vertico_package_as/">Reddit</a>)</li>
<li><a href="https://protesilaos.com/codelog/2024-02-17-emacs-modern-minibuffer-packages/">Protesilaos Stavrou: Emacs: modern minibuffer packages (Vertico, Consult, etc.)</a> (44:01 <a href="https://www.youtube.com/watch?v=d3aaxOqwHhI">YouTube</a>, <a href="https://www.reddit.com/r/emacs/comments/1ata3o3/emacs_modern_minibuffer_packages_vertico_consult/">Reddit</a>)</li>
<li><a href="https://www.youtube.com/watch?v=4911q_SnGDU">Emacs from Source Part 2: vertico, orderless, and marginalia</a> (19:23, 2022)</li>
<li><a href="https://www.youtube.com/watch?v=QBvGa0Yg1NI">GNU/Emacs - Vertico Embark Consult Marginalia Orderless for completion &amp; some extra functionalities</a> (10:44, 2021)</li>
<li><a href="https://www.youtube.com/watch?v=UtqE-lR2HCA">System Crafters Live! - Replacing Ivy and Counsel with Vertico and Consult</a> (01:59:18)</li>
<li><a href="https://www.youtube.com/watch?v=J0OaRy85MOo">Streamline Your Emacs Completions with Vertico</a> (18:54, 2021, <a href="https://reddit.com/r/emacs/comments/neh3d7/streamline_your_emacs_completions_with_vertico/">Reddit</a>)</li>
<li><a href="https://www.youtube.com/watch?v=0OuF6PLkzsQ">Modern Emacs Part 1: Consult, Marginalia, Vertico, Orderless and Embark - VOD</a> (01:20:50)</li>
<li><a href="https://www.youtube.com/watch?v=MB4oe8QELM0">emacs 대화형 완성(interactive completion) 패키지 vertico가 한글 증분 검색을 지원하게 수정</a> (01:09, 2023)</li>
<li><a href="https://gist.github.com/anticomputer/ea71ecab639326bf540418f31c600e09">ivy compliant vertico config · GitHub</a></li>
<li><a href="http://emacs.dyerdwelling.family/emacs/20241004102654-emacs&#45;&#45;simple-directory-creation-using-vertico-exit-with-input/">James Dyer: Simple Directory and File Creation Using Vertico Completion Exit With Input</a> - M-RET exists with the minibuffer input</li>
<li><a href="https://erick.navarro.io/blog/switching-from-helm-to-vertico-and-friends/">Switching from helm to vertico and friends</a> (<a href="https://www.reddit.com/r/emacs/comments/1686ujn/switching_from_helm_to_vertico_and_friends/">Reddit</a>)</li>
<li><a href="https://mastodon.bsd.cafe/@sqrtminusone/113177489101406632">vertico impressions</a> Mastodon thread</li>
<li><a href="https://github.com/ventruvian/vertico-timer">vertico-timer, my opinionated approach to vertico-indexed and candidate selection</a> (<a href="https://www.reddit.com/r/emacs/comments/1ozd9e0/sharing_a_verticoextension_verticotimer_my/">Reddit</a>)</li>
<li><a href="https://github.com/jdtsmith/vertico-truncate">vertico-truncate: Judicious truncation for long vertico lines</a> (2023)</li>
<li><a href="https://www.reddit.com/r/emacs/comments/117zdnu/what_are_the_benefits_of_vertico_over_helm_or_ivy/">What are the benefits of Vertico over Helm or Ivy?</a> Reddit discussion</li>
<li><a href="https://codeberg.org/jao/elibs/src/branch/main/custom/jao-custom-completion.el">custom/jao-custom-completion.el</a></li>
<li><a href="https://github.com/steve-downey/completion.tap">completion.tap/after-init.el</a> - vertico, consult, cape, etc. starter config</li>
<li><a href="https://kristofferbalintona.me/posts/202202211546/">Vertico, Marginalia, All-the-icons-completion, and Orderless</a> (2022, updated 2025)</li>
<li><a href="https://www.youtube.com/watch?amp;t=511s&amp;v=hPwDbx&#45;&#45;Waw">Vertico Extensions for Emacs</a> (12:43, 2022, <a href="https://www.reddit.com/r/emacs/comments/ryqfz1/vertico_extensions_demo/">Reddit</a>)</li>
<li><a href="https://www.youtube.com/watch?v=gal3YxBkusY">Emacs packages ednc, vertico, consult, embark, marginalia, orderless and fd-dired</a> (41:14)</li>
<li><a href="https://gist.github.com/rougier/126e358464e12aa28fac5b4f3dd5eb9c">vertico + marginalia + mini-frame + lot of hacks&hellip;</a> (<a href="https://www.reddit.com/r/emacs/comments/tnih4d/vertico_marginalia_miniframe_lot_of_hacks/">Reddit</a>) NANO prototype</li>
</ul></details></li>
</ul>



<details class="code-details" style="padding: 1em;
                 border-radius: 15px;
                 font-size: 0.9em;
                 box-shadow: 0.05em 0.1em 5px 0.01em  #00000057;">
                  <summary><strong>Ido</strong></summary>
<ul class="org-ul">
<li><a href="https://www.masteringemacs.org/article/introduction-to-ido-mode">Introduction to Ido Mode</a> (<a href="https://www.reddit.com/r/emacs/comments/1167jwk/introduction_to_ido_mode/">Reddit</a>)</li>
<li><a href="https://github.com/DarwinAwardWinner/ido-yes-or-no">ido-yes-or-no: Use ido to answer yes or no questions.</a></li>
<li><a href="https://github.com/sstraust/ido-numbered-mode">GitHub - sstraust/ido-numbered-mode: Add numbered mode to ido in emacs!</a> (<a href="https://www.reddit.com/r/emacs/comments/xf6b0i/idonumberedmode_i_made_my_first_emacs_package_it/">Reddit</a>)
<ul class="org-ul">
<li><a href="https://github.com/johndoeuserr02/ido-numbered-mode/tree/johndoeuserr02-patch-1">Patch ido-numbered-mode to allow 0 key</a> (<a href="https://www.reddit.com/r/emacs/comments/1q09erd/in_relation_with_ido_mode/">Reddit</a>)</li>
</ul></li>
<li><a href="https://github.com/larkery/ido-grid.el">ido-grid.el: reimplementation of ido-grid-mode to be simpler/faster</a></li>
<li><a href="http://emacsredux.com/blog/2021/10/28/submitting-the-current-input-in-ido/">Emacs Redux: Submitting the Current Input in ido</a></li>
</ul>


</details>
<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?
<ul class="org-ul">
<li><a href="https://www.reddit.com/r/emacs/comments/1ismjvx/the_mx_menu_is_probably_the_least_talked_about/">The M-x menu is probably the least talked about feature of Emacs.</a></li>
</ul></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>Have you tweaked the way you navigate to take advantage of completion?</li>
<li><p>
Have you experimented with other ways of matching candidates via <code>completion-styles</code>, like the way <a href="https://github.com/oantolin/orderless">orderless</a> lets you type parts of the completion name in any order?
</p>
<details class="code-details" style="padding: 1em;
                 border-radius: 15px;
                 font-size: 0.9em;
                 box-shadow: 0.05em 0.1em 5px 0.01em  #00000057;">
                  <summary><strong>Resources</strong></summary>
<ul class="org-ul">
<li><a href="https://www.youtube.com/watch?v=QNdOBXVdd1Q">Exploring Emacs Completion Styles - System Crafters Live!</a> (02:03:03, 2024, <a href="https://systemcrafters.net/live-streams/november-15-2024/">show notes</a>)</li>
<li><a href="https://emacs.dyerdwelling.family/emacs/20250604085817-emacs&#45;&#45;building-your-own-orderless-style-completion-in-emacs-lisp/">James Dyer: Building Your Own Orderless Style Completion in Emacs Lisp</a></li>
<li><a href="https://emacs.dyerdwelling.family/emacs/20250905100614-emacs&#45;&#45;customizing-emacs-completion-from-fidos-fuzzy-matching-to-literal-substring-search/">James Dyer: Customizing Emacs Completion: From Fido's Fuzzy Matching to Literal Substring</a> (2025, <a href="https://irreal.org/blog/?p=13252">Irreal</a>)</li>
<li><a href="https://github.com/jojojames/fussy">fussy: completion-style/fuzzy matching/scoring system for vertico/ivy/helm/etc</a> (<a href="https://www.reddit.com/r/emacs/comments/v4rq3p/fussy_a_completionstylefuzzy_matchingscoring/">Reddit</a>)</li>
<li><a href="https://github.com/lewang/hotfuzz-with-orderless">completion experiment - hotfuzz-with-orderless</a> (2025, <a href="https://www.reddit.com/r/emacs/comments/1l8kas3/completion_experiment_hotfuzzwithorderless/">Reddit</a>)</li>
<li><a href="https://www.reddit.com/r/emacs/comments/18dh631/emacs_advent_calendar_7_ordeless_embark_10_and/">Emacs Advent Calendar 7: orderless, embark 1.0 and some bric-a-brac</a> (2023)</li>
<li><a href="https://www.reddit.com/r/emacs/comments/xt8pj7/magic_orderless/">Magic orderless</a> - tweaking the OR operator (2022)</li>
<li><a href="https://magnus.therning.org/2024-05-04-orderless-completion-in-lsp-mode.html">Magnus: Orderless completion in lsp-mode</a> (2024)</li>
<li><a href="https://www.youtube.com/watch?v=WqN27ltSwag">Activate superword mode in the Emacs Minibuffer #coding #programming</a> (01:07, 2025) treat symbols (ex: <code>example_symbol</code>) as words</li>
</ul></details></li>
</ul>



<ul class="org-ul">
<li><p>
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>?
</p>
<details class="code-details" style="padding: 1em;
                 border-radius: 15px;
                 font-size: 0.9em;
                 box-shadow: 0.05em 0.1em 5px 0.01em  #00000057;">
                  <summary><strong>Consult</strong></summary>
<ul class="org-ul">
<li><a href="https://protesilaos.com/codelog/2021-01-06-emacs-default-completion/">Emacs: completion framework (Embark, Consult, Orderless, etc.)</a> (2021, <a href="https://reddit.com/r/emacs/comments/krptmz/emacs_completion_framework_embark_consult/">Reddit</a>, <a href="https://www.youtube.com/watch?v=43Dg5zYPHTU">YouTube</a> 46:58)</li>
<li><a href="https://macowners.club/posts/from-ivy-to-vertico/">From Ivy &amp; Counsel to Vertico &amp; Consult</a> (2021, <a href="https://reddit.com/r/emacs/comments/ol2luk/from_ivy_counsel_to_vertico_consult/">Reddit</a>)</li>
<li><a href="https://cestlaz.zamansky.net/cestlaz-old-hugo.github.io/post/using-emacs-80-vertico/">Using Emacs Episode 80 Vertico, Marginalia, Consult, and Embark</a> (<a href="https://www.youtube.com/watch?v=5ffb2at2d7w">YouTube</a> 25:10, <a href="https://www.reddit.com/r/emacs/comments/qfrxgb/using_emacs_episode_80_vertico_marginalia_consult/">Reddit</a>, <a href="https://irreal.org/blog/?p=10074">Irreal</a>, 2021)</li>
<li><a href="https://www.reddit.com/r/emacs/s/hNF4Y5Jrap">Comparison of vertico, ivy, consult, counsel, marginalia, ivy-rich, embark, ivy-occur</a></li>
<li><a href="https://www.youtube.com/watch?v=HzlLxWTD6QY">21天学会Emacs 2022 Edition（第四天）</a> - vertico, orderless, marginalia, embark, consult</li>
<li><a href="https://www.reddit.com/r/emacs/comments/1qef1wl/consult_breaking_change/">Consult breaking change</a> (2026) options can be specified at the start</li>
<li><a href="https://www.reddit.com/r/emacs/comments/1oy6ddj/new_releases_of_consult_vertico_corfu_and_more/">New releases of Consult, Vertico, Corfu and more</a> (2025)</li>
<li><a href="https://www.reddit.com/r/emacs/comments/14bx3m9/concealing_star_buffers_with_consult/">Concealing Star Buffers with Consult</a> (2023)</li>
<li><a href="https://www.youtube.com/watch?v=fLBNpNu65ik">Emacs Consult Git Is A Way To See All The Files Of A Git Repo In Minibuffer</a> (07:41)</li>
<li><a href="https://emacsredux.com/blog/2021/11/25/redo-complex-command-with-consult/">Emacs Redux: Redo Complex Command with Consult</a> (2021)</li>
<li><a href="https://takeonrules.com/2023/03/14/spending-a-bit-of-time-reviewing-consult-emacs-package/">Jeremy Friesen: Spending a Bit of Time Reviewing Consult Emacs Package</a> (2023)</li>
<li><a href="http://amitp.blogspot.com/2024/05/emacs-consult-buffer-filenames.html">Amit Patel: Emacs consult-buffer filenames</a> (2024)</li>
<li><a href="https://www.reddit.com/r/emacs/comments/1iagdzb/i_wrote_my_first_emacs_function/">consult-dir&ndash;zoxide-dirs</a> (2025)</li>
<li><a href="https://www.reddit.com/r/emacs/comments/10p84fk/consultinfo/">consult-info</a> (2023) choose one or more info manuals to search</li>
<li><a href="https://www.reddit.com/r/emacs/comments/1p9nowr/update_on_consult_and_jinx/">Update on Consult and Jinx</a> (2025) - Jinx is a spell-checker</li>
<li><a href="https://www.reddit.com/r/emacs/comments/14aglvm/highlight_multiple_lines_in_consultline/">Highlight multiple lines in consult-line</a> (2023)</li>
<li><a href="http://www.emacs.dyerdwelling.family/emacs/20240127113907-emacs&#45;&#45;disabling-consult-preview-selectively/">James Dyer: Opening Frequently Used Files More Efficiently using consult</a> (2024)</li>
<li><a href="https://emacs.dyerdwelling.family/emacs/20230225134207-emacs&#45;&#45;trying-out-consult-ripgrep-to-replace-deadgrep/">James Dyer: Replacing deadgrep with consult-ripgrep</a> (2023)</li>
<li><a href="https://v.redd.it/fq5vj5rcz45a1">Make vertico-posframe move to the side so consult previews work nicely</a> (<a href="https://www.reddit.com/r/emacs/comments/zi3qb9/make_verticoposframe_move_to_the_side_so_consult/">Reddit</a>, 2023)</li>
<li><a href="https://manueluberti.eu/posts/2022-09-01-consult-xref/">Manuel Uberti: Ugrep and consult-xref</a> (2022)</li>
<li><a href="https://manueluberti.eu/posts/2023-09-16-consult-ugrep/">Using Ugrep with Consult</a> (2023)</li>
<li><a href="https://magnus.therning.org/2023-03-30-more-on-tree-sitter-and-consult.html">More on tree-sitter and consult</a> (<a href="https://www.reddit.com/r/emacs/comments/126umaf/more_on_treesitter_and_consult/">Reddit</a>, 2023)</li>
<li><a href="https://sachachua.com/blog/2025/07/finding-my-blog-posts-with-consult-omni/">Sacha Chua: Finding my blog posts with consult-omni</a> (2025)</li>
<li><a href="https://taonaw.com/2025/05/15/two-eamcs-tweaks-i-forgot.html">TAONAW - Emacs and Org Mode: consult-recent-file, consult-org-agenda</a> (2025)</li>
<li><a href="https://takeonrules.com/2024/06/08/adding-a-consult-function-for-visualizing-xref/">Jeremy Friesen: Adding a Consult Function for Visualizing Xref</a> (2024)</li>
<li><a href="https://takeonrules.com/2024/02/28/configuring-consult-imenu-narrowing-for-ruby/">Jeremy Friesen: Configuring Consult Imenu Narrowing for Ruby</a> (2024)</li>
<li><a href="https://gitlab.com/OlMon/consult-projectile">[ANN] consult-projectile - Consult integration for projectile</a> (<a href="https://reddit.com/r/emacs/comments/m9zgwi/ann_consultprojectile_consult_integration_for/">Reddit</a>, 2021)</li>
<li><a href="https://codeberg.org/ravi/consult-dash">Consult interface to dash-docs</a></li>
<li><a href="https://github.com/youngker/consult-codesearch.el">consult-codesearch.el: Consult interface for codesearch</a></li>
<li><a href="https://www.reddit.com/r/emacs/comments/sszyq3/consultproject_consult_extension_for_projectel/">Consult-project - consult extension for project.el</a> (2022)</li>
<li><a href="https://github.com/nohzafk/consult-snapfile">consult-snapfile: instant file search for Consult (Rust server, &lt;1ms cached queries)</a> (<a href="https://www.reddit.com/r/emacs/comments/1pweleu/consultsnapfile_instant_file_search_for_consult/">Reddit</a>)</li>
<li><a href="https://www.reddit.com/r/emacs/comments/rvd2yi/dtache_consult/">Dtache Consult</a></li>
<li><a href="https://github.com/armindarvish/consult-omni">consult-omni: A powerful omni-search and launcher in Emacs (like Spotlight or Alfred but in Emacs)</a> (<a href="https://www.reddit.com/r/emacs/comments/1e6qhpf/announcing_consultomni_a_powerful_omnisearch_and/">Reddit</a>)</li>
<li><a href="https://github.com/chmouel/consult-vc-modified-files">chmouel/consult-vc-modified-files: List git modified files in a project with vc</a> (<a href="https://www.reddit.com/r/emacs/comments/17bbh8g/consultvcmodifiedfiles_list_git_modified_files_in/">Reddit</a>) (<a href="https://fosstodon.org/@chmouel/114913425410668000">new version</a> adds consult-vc-log-select-files)</li>
<li><a href="https://github.com/karthink/consult-dir">consult-dir: switch directories in Emacs at any time</a> (<a href="https://www.reddit.com/r/emacs/comments/p4wk1u/consultdir_switch_directories_in_emacs_at_any_time/">Reddit</a>)</li>
<li><a href="https://www.reddit.com/r/emacs/comments/1pdct4q/consultjq_live_queries_against_json_vai_jq_and/">consult-jq: Live queries against JSON via jq and consult</a></li>
<li><a href="https://www.reddit.com/r/emacs/comments/t4i0tn/consultprojectextra_previously_consultproject_is/">consult-project-extra (previously consult-project) is now on MELPA!</a></li>
<li><a href="https://github.com/karthink/consult-reftex">consult-reftex</a></li>
<li><a href="https://github.com/jdtsmith/consult-ripfd">consult-ripfd: live finding + searching with an fd + rg consult mashup</a> (<a href="https://www.reddit.com/r/emacs/comments/1q61xq1/consultripfd_live_finding_searching_with_an_fd_rg/">Reddit</a>)</li>
<li><a href="https://github.com/guibor/consult-spotlight">consult-spotlight: consult with macOS Spotlight</a> (<a href="https://www.reddit.com/r/emacs/comments/1pqggx3/consultspotlight_consult_with_macos_spotlight/">Reddit</a>)</li>
<li><a href="https://jao.io/blog/consulting-spotify-in-a-better-way.html">consulting spotify in a better way</a></li>
<li><a href="https://www.youtube.com/watch?si=5N_5YeKIjHJH2cjT&amp;v=7pDfyqBZwvo&amp;feature=youtu.be">Emacs consult-web package: Get web search results as well as omni searches inside emacs!</a> (1:40:55, 2025)</li>
<li><a href="https://jao.io/blog/consult-recoll-with-live-preview.html">jao: consult recoll with live preview</a></li>
<li><a href="https://jao.io/blog/inline-snippets-and-grouping-in-consult-recoll.html">jao: inline snippets and grouping in consult-recoll</a></li>
<li><a href="https://takeonrules.com/2025/04/11/extending-consult-notes-package-to-add-draft-blog-post-candidates/">Jeremy Friesen: Extending consult-notes Package to Add Draft Blog Post Candidates</a></li>
<li><a href="https://blog.hoetzel.info/post/consult-gnome-search/">Jürgen Hötzel: Gnome Search Provider: Emacs Integration</a> (<a href="https://www.reddit.com/r/emacs/comments/1d3uwyn/emacs_integration_for_gnome_search_provider/">Reddit</a>)</li>
<li><a href="https://github.com/liuyinz/consult-todo.git">liuyinz/consult-todo</a> - search, filter, and jump hl-todo keywords (<a href="https://www.reddit.com/r/emacs/comments/162v446/new_package_consulttodo/">Reddit</a>)</li>
<li><a href="https://github.com/mclear-tools/consult-notes">mclear-tools/consult-notes: Use consult to search notes</a> (<a href="https://www.reddit.com/r/emacs/comments/v7h6jk/new_package_consultnotes/">Reddit</a>)</li>
<li><a href="https://www.reddit.com/r/emacs/comments/pcoyjs/new_package_consultbibtex/">New package consult-bibtex</a></li>
<li><a href="https://codeberg.org/rahguzar/consult-hoogle/src/branch/hoogle-buffer">rahguzar/consult-hoogle: Hoogle for emacs</a></li>
<li><a href="https://sachachua.com/blog/2025/10/consult-org-db-v3-approximate-search-of-my-sketches-using-text-and-a-multi-source-consult-command-for-approximately-searching-sketches-and-blog-posts/">Sacha Chua: consult + org-db-v3: Approximate search of my sketches using text, and a multi-source consult command for approximately searching sketches and blog posts</a></li>
<li><a href="https://git.sr.ht/~woolsweater/uncongregate.el">uncongregate.el: Custom handling of query string in consult grep</a></li>
<li><a href="https://codeberg.org/mekeor/emacs-consult-erc">consult-erc &ndash; ERC-related buffer candidate sources for consult-buffer</a> (<a href="https://www.reddit.com/r/emacs/comments/19aigl6/wip_consulterc_ercrelated_buffer_candidate/">Reddit</a>)</li>
</ul></details></li>
</ul>



<details class="code-details" style="padding: 1em;
                 border-radius: 15px;
                 font-size: 0.9em;
                 box-shadow: 0.05em 0.1em 5px 0.01em  #00000057;">
                  <summary><strong>Helm</strong></summary>
<ul class="org-ul">
<li><a href="https://rnchzn.github.io/helm/doc/helm-manual.html">Helm documentation</a></li>
<li><a href="https://occasionallycogent.com/intermediate_emacs_helm/index.html">James Cash: Intermediate Emacs: Customizing Helm</a></li>
<li><a href="https://www.reddit.com/r/emacs/comments/ar7992/helm_news_for_geiser_slime_comint_mx_shell_and/">Helm news for Geiser, SLIME, Comint, M-x shell, and more!</a></li>
<li><a href="https://github.com/emacs-helm/helm/releases/tag/v4.0">Helm 4.0 released (and no release notes)</a> (<a href="https://www.reddit.com/r/emacs/comments/1f07voc/helm_40_released_and_no_release_notes/">Reddit</a>)</li>
<li><a href="https://www.youtube.com/watch?v=NgOaveOtVd8">Emoji Insertion in Emacs With Helm</a> (04:37, 2024)</li>
<li><a href="https://github.com/youngker/helm-codesearch.el">helm-codesearch.el:helm interface for codesearch</a></li>
<li><a href="https://github.com/burnthekernel/helm-browser">burnthekernel/helm-browser: helm-browser is an Emacs package that can be used to quickly find and switch between multiple browser windows and tabs.</a></li>
<li><a href="http://ag91.github.io/blog/2022/09/13/a-way-to-fix-helm-handling-of-symlink-tmp-dir-in-mac-os">Andrea: A way to fix Helm handling of symlink (/tmp dir) in Mac OS</a></li>
<li><a href="https://github.com/BenediktBroich/helm-twitch">helm-twitch</a></li>
<li><a href="https://github.com/dfeich/helm-deft">helm-deft: A helm based emacs module to help search in a predetermined list of directories. Inspired by the deft module.</a></li>
<li><a href="https://occasionallycogent.com/emacs_new_completions_helper/index.html">James Cash: Emacs Completes Me</a> - open in split, sort shells by distance, jumping around</li>
</ul>


</details>
<details class="code-details" style="padding: 1em;
                 border-radius: 15px;
                 font-size: 0.9em;
                 box-shadow: 0.05em 0.1em 5px 0.01em  #00000057;">
                  <summary><strong>Ivy/counsel</strong></summary>
<ul class="org-ul">
<li><a href="https://martinfowler.com/articles/2024-emacs-completion.html">Improving my Emacs experience with completion</a> (<a href="https://news.ycombinator.com/item?id=39187370">HN</a>, <a href="https://irreal.org/blog/?p=11960">Irreal</a>) - Ivy</li>
<li><a href="https://www.youtube.com/watch?v=is4sCzDTlJY">Emacs Counsel M X Is A Bloody Good Way To Find Commands 2025_02_23_16:29:00</a> (07:00, 2025)</li>
<li><a href="https://www.youtube.com/watch?v=XfFso24XeFQ&amp;list=PL0sMmOaE_gs3E0OjExoI7vlCAVygj6S4I&amp;index=3">scimax - ivy for completion with actions</a> (35:50, 2021, <a href="https://irreal.org/blog/?p=10087">Irreal</a>)</li>
<li><a href="https://github.com/gexplorer/counsel-popup">counsel-popup: The power of searching with counsel using transient popups Magit style.</a></li>
<li><a href="http://mbork.pl/2021-05-24_Ivy_and_ignoring_the_order_of_tokens">Marcin Borkowski: Ivy and ignoring the order of tokens</a></li>
<li><a href="https://fediverse.tv/w/2r5b2JCkazgiW2NnNJP9k7">Emacs : Completado y busqueda ( con-Ivy+Swiper )</a></li>
</ul>


</details>
<ul class="org-ul">
<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>?
<ul class="org-ul">
<li><a href="https://youtu.be/T9kygXveEz0">Give Emacs Psychic Completion Powers with prescient.el</a> (<a href="https://reddit.com/r/emacs/comments/kitzsc/give_emacs_psychic_completion_powers_with/">Reddit</a>)</li>
<li><a href="https://github.com/axelf4/emacs-completion-bench#readme">emacs-completion-bench: Benchmark of various fuzzy Emacs completion styles</a></li>
</ul></li>
<li><p>
Do you want to see additional information when you're choosing completions? Try out <a href="https://github.com/minad/marginalia">marginalia</a> and other customizations.
</p>
<details class="code-details" style="padding: 1em;
                 border-radius: 15px;
                 font-size: 0.9em;
                 box-shadow: 0.05em 0.1em 5px 0.01em  #00000057;">
                  <summary><strong>Resources</strong></summary>
<ul class="org-ul">
<li><a href="https://manueluberti.eu/posts/2023-04-16-vertico-current/">Manuel Uberti: Tweaking Vertico candidates</a></li>
<li><a href="https://namilus.github.io/posts/completions-overlay-intro.html">completions-overlay.el Overlays for completion candidates</a> (<a href="https://www.reddit.com/r/emacs/comments/1mtpb2m/completionsoverlayel_overlays_for_completion/">Reddit</a>)</li>
<li><a href="https://www.youtube.com/watch?v=M1DqNxMp8ws">Emacs Commands Explanation Via Marginalia Annotation 2024_08_12_04:10:20</a> (07:23, 2025)</li>
<li><a href="https://lifeofpenguin.blogspot.com/2024/07/annotate-completion-candidates-gnu-emacs.html">Anand Tamariya: Annotate completion candidates (GNU Emacs)</a> (<a href="https://www.reddit.com/r/emacs/comments/1e2y513/annotate_completion_candidates_gnu_emacs/">Reddit</a>)</li>
<li><a href="https://sachachua.com/blog/2021/02/marginalia-and-hiding-the-value-of-password-ish-variables/">Sacha Chua: Marginalia and hiding the value of password-ish variables</a></li>
<li><a href="https://emacs.dyerdwelling.family/emacs/20250130074049-emacs&#45;&#45;copy-icomplete-candidate-to-clipboard/">James Dyer: Copying completion candidate to the clipboard</a> (<a href="https://irreal.org/blog/?p=12759">Irreal</a>)</li>
<li><a href="https://alpo.gitlab.io/jots/posts/2024/07/jump-to-emacs-completions-buffer/">Alex Popescu: Key Binding and Function to Jump to Emacs Completions Buffer</a> (<a href="https://irreal.org/blog/?p=12356">Irreal</a>)</li>
<li><a href="https://github.com/MintSoup/all-the-icons-completion">GitHub - MintSoup/all-the-icons-completion: Add icons to completion candidates in Emacs</a> (<a href="https://www.reddit.com/r/emacs/comments/y6d265/a_better_alltheiconscompletion_support_for_more/">Reddit</a>)</li>
<li><a href="https://kisaragi-hiu.com/emacs-completion-metadata.html">While dissecting embark and marginalia, I learnt that functions passed to completing-read also returns a category</a></li>
</ul></details></li>
</ul>



<ul class="org-ul">
<li><p>
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?
</p>
<details class="code-details" style="padding: 1em;
                 border-radius: 15px;
                 font-size: 0.9em;
                 box-shadow: 0.05em 0.1em 5px 0.01em  #00000057;">
                  <summary><strong>Resources</strong></summary>
<ul class="org-ul">
<li><a href="https://www.reddit.com/r/emacs/comments/mg6kx2/embark_key_features_and_tweaks/">Embark &ndash; Key features and tweaks</a></li>
<li><a href="https://manueluberti.eu/posts/2020-12-25-embark/">Embarking in a new affair with completions</a> (<a href="https://reddit.com/r/emacs/comments/kk89rs/embarking_in_a_new_affair_with_completions/">Reddit</a>)</li>
<li><a href="https://www.youtube.com/watch?v=uoP9ZYdNCHg">Emacs: Embark and my extras</a> (33:21, 2021, <a href="https://reddit.com/r/emacs/comments/ktuizj/emacs_embark_and_my_extras/">Reddit</a>)</li>
<li><a href="https://www.youtube.com/watch?v=qk2Is_sC8Lk">System Crafters Live! - The Many Uses of Embark</a> (01:56:43, 2021)</li>
<li><a href="https://www.reddit.com/r/emacs/comments/osx5t9/recent_embark_developments_detailed_action/">Recent Embark Developments: Detailed Action Indicator, Highlighting and Cycling the Target at Point</a></li>
<li><a href="https://manueluberti.eu/posts/2023-10-01-embark-ugrep/">Using Ugrep with Embark</a></li>
<li><a href="https://karthinks.com/software/elmo-embark-live-mode-for-emacs/">Karthik Chikmagalur: ELMO - Embark Live Mode for Emacs</a></li>
<li><a href="https://mastodon.social/@ctietze/112161263055070814">Embark/Vertico tip: switch to multiform/grid display - @ctietze@mastodon.social</a></li>
</ul></details></li>
</ul>



<ul class="org-ul">
<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><p>
Do you want to define your own completion commands, maybe even with previews, dynamic collections or asynchronous data?
</p>
<details class="code-details" style="padding: 1em;
                 border-radius: 15px;
                 font-size: 0.9em;
                 box-shadow: 0.05em 0.1em 5px 0.01em  #00000057;">
                  <summary><strong>Resources</strong></summary>
<ul class="org-ul">
<li><a href="https://www.reddit.com/r/emacs/comments/1e0w6r0/confused_implementing_programmed_completion_a/">Confused implementing programmed completion? A snippet to get you started</a></li>
<li><a href="https://xenodium.com/bending-emacs-episode-8-completing-read">Alvaro Ramirez: Bending Emacs - Episode 8: completing-read</a> (<a href="https://www.youtube.com/watch?v=J_WxzZXuTLI">YouTube</a> 17:05 2025, <a href="https://www.reddit.com/r/emacs/comments/1pktlz0/bending_emacs_episode_8/">Reddit</a>, <a href="https://irreal.org/blog/?p=13467">Irreal</a>)</li>
<li><a href="https://lists.gnu.org/archive/html/emacs-devel/2021-04/msg01097.html">[emacs-devel] RFC: Setting `minibuffer-completion-table` buffer-locally</a></li>
<li><a href="https://github.com/ichernyshovvv/completing-read-strings">completing-read-strings.el - Read multiple strings in the minibuffer, with completion</a> (<a href="https://www.reddit.com/r/emacs/comments/1d2od0t/completingreadstringsel_read_multiple_strings_in/">Reddit</a>)</li>
<li><a href="https://www.youtube.com/watch?v=bB7rywlahSc">Semantic completing read in #Emacs</a> (17:24, 2023)</li>
<li><a href="https://emacs.dyerdwelling.family/emacs/20240804075952-emacs&#45;&#45;finding-files-using-completing-read/">James Dyer: Efficient File Searching in Emacs: Leveraging completing-read with Customizable Methods</a></li>
<li><a href="https://tsdh.org/posts/2023-03-21-a-read-buffer-function-also-suggesting-recent-files.html">Tassilo Horn: A read-buffer-function also suggesting recent files</a></li>
<li><a href="https://www.reddit.com/r/emacs/comments/k2at05/rfc_immediate_completion_feature_checking_before/">{RFC} Immediate completion feature (checking before publishing package)</a></li>
</ul></details></li>
</ul>




<ul class="org-ul">
<li><b>In-buffer completion</b>
<ul class="org-ul">
<li>Overviews:
<ul class="org-ul">
<li><a href="https://www.reddit.com/r/emacs/comments/us51if/please_tell_me_about_the_different_approaches_to/">Please tell me about the different approaches to text expansion you can find in emacs.</a> (<a href="https://irreal.org/blog/?p=10540">Irreal</a>)</li>
<li><a href="https://youtu.be/Vx0bSKF4y78">The Many Forms of Code Completion In Emacs</a> (16:56, <a href="https://www.reddit.com/r/emacs/comments/y4rnqa/the_many_forms_of_code_completion_in_emacs/">Reddit</a>)</li>
<li><a href="https://www.youtube.com/watch?v=uBRxUnMYIjs">Emacs Snippets and Templates</a> (37:50, 2022)</li>
</ul></li>
<li><p>
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?
</p>
<details class="code-details" style="padding: 1em;
                 border-radius: 15px;
                 font-size: 0.9em;
                 box-shadow: 0.05em 0.1em 5px 0.01em  #00000057;">
                  <summary><strong>Resources</strong></summary>
<ul class="org-ul">
<li><a href="https://www.johndcook.com/blog/2023/01/30/good-autocomplete/">John D. Cook: Good autocomplete</a> (<a href="https://www.reddit.com/r/emacs/comments/10plt9x/good_autocomplete/">Reddit</a>)</li>
<li><a href="https://github.com/xFA25E/abbrev-hook">abbrev-hook: Define hooks for abbrevs in Emacs</a></li>
<li><a href="https://www.emacs.dyerdwelling.family/emacs/20221123131342-emacs&#45;&#45;expanding-text-using-abbrev/">Expanding Text using abbrev and skeletons</a></li>
<li><a href="https://www.reddit.com/r/emacs/comments/13bdcg0/lam_manage_buffer_local_abbrevs_at_the_speed_of/">lam: Manage buffer local abbrevs at the speed of light</a> (<a href="https://irreal.org/blog/?p=11342">Irreal</a>)</li>
<li><a href="https://mbork.pl/2022-12-05_A_simple_function_to_create_abbreviations">Marcin Borkowski: A simple function to create abbreviations</a></li>
<li><a href="https://www.rahuljuliato.com/posts/abbrev-mode">Crafting Your Own Snippets with Emacs Built-In Abbrev Mode</a> (<a href="https://www.reddit.com/r/emacs/comments/1ox5mbi/crafting_your_own_snippets_with_emacs_builtin/">Reddit</a>)</li>
<li><a href="https://www.youtube.com/watch?v=G5jmVz2FWpg">Emacs For Writers Unit 10: Text Expansion with Abbrev Mode</a> (07:38, 2025)</li>
<li><a href="https://www.youtube.com/watch?v=-u_dl4WmDbY">Emacs Abbrevs</a> (01:04, 2022)</li>
<li><a href="https://chainsawriot.com/postmannheim/2022/12/09/aoe9.html">Chung-hong Chan: Advent of emacs #9: How I type formulaic things in emacs</a></li>
<li><a href="https://fediverse.tv/w/aPdQAs2vRcBVsFpK9MMERV">Agilidad escribiendo en Emacs : abreviación -i</a></li>
</ul></details></li>
</ul></li>
</ul>



<ul class="org-ul">
<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?
<ul class="org-ul">
<li><a href="https://www.reddit.com/r/emacs/comments/oojacm/fancydabbrev_complete_as_you_type_recent/">fancy-dabbrev: complete as you type, recent improvements</a></li>
<li><a href="https://www.reddit.com/r/emacs/comments/1i3ej9u/simple_prototype_insert_and_evaluate_elisp_inline/">Simple prototype: inline autosuggesting for eshell, comint and in-buffer (using dabbrev)</a></li>
</ul></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?
<ul class="org-ul">
<li><a href="http://www.masteringemacs.org/article/text-expansion-hippie-expand">Mickey Petersen: Text Expansion with Hippie Expand</a> (<a href="https://www.reddit.com/r/emacs/comments/urmnjj/text_expansion_with_hippie_expand/">Reddit</a>, <a href="https://irreal.org/blog/?p=10538">Irreal</a>)</li>
<li><a href="https://www.reddit.com/r/emacs/comments/1it5yyi/simple_functions_for_making_hippieexpand_more/">Simple Functions for Making Hippie-Expand More Intuitive to Use</a></li>
</ul></li>
<li><p>
Have you defined your own snippets for prose or code? (<a href="https://github.com/joaotavora/yasnippet">Yasnippet</a> is popular.)
</p>
<details class="code-details" style="padding: 1em;
                 border-radius: 15px;
                 font-size: 0.9em;
                 box-shadow: 0.05em 0.1em 5px 0.01em  #00000057;">
                  <summary><strong>Lots of Yasnippet links</strong></summary>
<ul class="org-ul">
<li><a href="https://www.youtube.com/watch?v=0qEHgiaSnsw">Yasnippet: A Useful Templating System in Emacs</a> (09:20, 2025)</li>
<li><a href="https://www.youtube.com/watch?v=UWJRgmAIZcg">Emacs YASnippet</a> (13:04, 2022)</li>
<li><a href="https://www.youtube.com/watch?v=OIdtVXCC7Wc">Emacs: Yasnippet</a> (33:40, 2021)</li>
<li><a href="https://blog.fixermark.com/posts/2024/emacs-recipes-with-yasnippet/">Emacs Recipes With Yasnippet | Mark's Project Blog</a> (<a href="https://mastodon.fixermark.com/@mark/112107194852116882">@mark@mastodon.fixermark.com</a>)</li>
<li><a href="http://xenodium.com/emacs-generate-a-swift-initializer">Alvaro Ramirez: Emacs: Context-aware yasnippets</a> (<a href="https://www.reddit.com/r/emacs/comments/zkb7aq/contextaware_yasnippets_via_treesitter/">Reddit</a>, <a href="https://news.ycombinator.com/item?id=34033087">HN</a>)</li>
<li><a href="https://emacstil.com/til/2022/02/19/use-yasnippet-for-personal-planning/">Emacs TIL: Use yasnippet for personal planning</a></li>
<li><a href="https://www.youtube.com/watch?v=5cGsiRtBK9I&amp;feature=youtu.be">LaTeX snippets with Yasnippet &amp; Auto Activating Snippets</a> (11:21, 2023)</li>
<li><a href="https://mjdiloreto.github.io/posts/yasnippet-helpful-buffer/">Making the yasnippet <b>new-snippet</b> buffer more helpful, and comparing it to Jetbrains live templates</a> (<a href="https://www.reddit.com/r/emacs/comments/ynrrnk/making_the_yasnippet_newsnippet_buffer_more/">Reddit</a>)</li>
<li><a href="https://one-octet.dev/posts/emacs-yasnippet.html">One-Octet: Emacs: Yasnippet</a> (in French)</li>
<li><a href="https://www.reddit.com/r/emacs/comments/ynbbu7/store_autoyasnippets_in_registers_and_expand_on/">Store auto-yasnippets in registers and expand on insert</a></li>
<li><a href="https://www.youtube.com/watch?v=xmBovJvQ3KU">Supercharge your Emacs / Spacemacs / Doom with Yasnippets!</a> (12:06, 2020, <a href="https://irreal.org/blog/?p=11131">Irreal</a>)</li>
<li><a href="https://plantarum.ca/2025/01/10/slurm-yasnippet/">Taming Slurm with Yasnippet - plantarum.ca</a> (<a href="https://ottawa.place/@plantarum/113822012804715528">@plantarum@ottawa.place</a>)</li>
<li><a href="https://notxor.nueva-actitud.org/2022/02/13/trasteando-con-yasnippets.html">Trasteando con yasnippets</a></li>
<li><a href="https://www.reddit.com/r/emacs/comments/q9c9mn/using_treesitter_to_create_better_snippets/">Using tree-sitter to create better snippets</a></li>
<li><a href="https://xvw.lol/pages/emacs-yasnippet.html">xvw - Expansion d'abréviations avec YASnippet</a></li>
<li><a href="https://fosstodon.org/@chmouel/115213554128442284">yasnippet to choose code block type and yank clipboard text into markdown block</a></li>
<li><a href="https://fosstodon.org/@oxalorg/115833162189468199">company, capf, yasnippet, and lsp</a></li>
<li><a href="https://www.reddit.com/r/emacs/comments/rphl36/dynamic_c_snippet_i_wrote/">Dynamic C++ Snippet I Wrote</a></li>
<li><a href="https://randyridenour.net/posts/2025-09-21-obscure-emacs-package-yankpad.html">Randy Ridenour: An Obscure Emacs Package: Yankpad</a> (<a href="https://irreal.org/blog/?p=13294">Irreal</a>)</li>
<li><a href="https://eeame-97718b.frama.io/jours/jour14/">Jour 14 : modèles · Emacs expliqué à mes enfants</a></li>
<li><a href="https://github.com/ymarco/auto-activating-snippets">auto-activating-snippets: Snippets for Emacs that expand as you type</a></li>
<li><a href="https://github.com/naiquevin/axy">axy - Ad hoc expansion of yasnippet from anywhere in emacs</a> (<a href="https://www.reddit.com/r/emacs/comments/1c66ad9/axy_ad_hoc_expansion_of_yasnippet_from_anywhere/">Reddit</a>)</li>
<li><a href="https://github.com/elken/cape-yasnippet">cape-yasnippet: Yasnippet Completion at Point Extension</a></li>
<li><a href="https://github.com/justinbarclay/yasnippet-capf">yasnippet-capf: A basic completion at point function for yasnippets</a></li>
<li><a href="https://github.com/fbrosda/yasnippet-treesitter-shim">yasnippet-treesitter-shim</a></li>
<li><a href="https://ag91.github.io/blog/2022/08/21/caching-yankpad-snippets-for-a-quicker-note-capturing/">Caching Yankpad snippets for a quicker note capturing</a></li>
<li><a href="https://www.reddit.com/r/emacs/comments/17s8ztu/converting_code_snippets_from_ultisnips_format_to/">Converting code snippets from Ultisnips format to YASnippet format</a> (<a href="https://irreal.org/blog/?p=11764">Irreal</a>)</li>
<li><a href="https://www.reddit.com/r/emacs/comments/13ikzjl/fyi_awkyasnippets_on_melpa/">FYI: awk-yasnippets on MELPA</a></li>
<li><a href="https://github.com/yilkalargaw/emacs-native-snippets">emacs-native-snippets: a collection for snippets that use emacs's built in templating utilities</a> (<a href="https://www.reddit.com/r/emacs/comments/wdbk34/emacss_native_templating_and_snippet_fuctionality/">Reddit</a>)</li>
<li><a href="https://www.jamescherti.com/emacs-ultisnips-mode-edit-snippets-files/">James Cherti: ultisnips-mode.el (*.snippets files)</a> (<a href="https://github.com/jamescherti/ultisnips-mode.el">Github</a>, <a href="https://www.reddit.com/r/emacs/comments/1qqc44z/ultisnipsmodeel_an_emacs_major_mode_for_editing/">Reddit</a>) - mode for editing Vim-compatible snippets</li>
<li><a href="https://github.com/rubenphilipp/aby">rubenphilipp/aby: Aby is a snippet orchestrator for Emacs.</a> (<a href="https://www.reddit.com/r/emacs/comments/14o92or/aby_snippet_orchestrator/">Reddit</a>)</li>
<li><a href="https://github.com/doomemacs/snippets">snippets: The Doom Emacs snippets library</a></li>
<li><a href="https://github.com/MiniApollo/snippy">Snippy.el: VSCode/LSP snippet support for Emacs with Yasnippet.</a> (<a href="https://www.reddit.com/r/emacs/comments/1qrhstj/snippyel_vscodelsp_snippet_support_for_emacs_with/">Reddit</a>)</li>
<li><a href="https://github.com/jamescherti/ultyas">ultyas: Convert Ultisnips (Vim) snippets to YASnippet (Emacs) format</a></li>
<li><a href="https://takeonrules.com/2023/05/17/unfurling-of-issue-reference-abbreviations-in-github-and-other-git-forge-issues/">Jeremy Friesen: Unfurling of Issue Reference Abbreviations in Github and other Git Forge Issues</a></li>
</ul></details></li>
</ul>



<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>
<ul class="org-ul">
<li><p>
Have you tried other template systems like <a href="https://github.com/minad/tempel">Tempel</a>, , or <a href="https://www.gnu.org/software/emacs/manual/html_node/autotype/Tempo.html">Tempo</a> for structured text insertion?
</p>
<details class="code-details" style="padding: 1em;
                 border-radius: 15px;
                 font-size: 0.9em;
                 box-shadow: 0.05em 0.1em 5px 0.01em  #00000057;">
                  <summary><strong>Resources</strong></summary>
<ul class="org-ul">
<li><a href="https://yhetil.org/emacs-devel/s4sfr9e6ol4.fsf@gmail.com/">Comparison of different templating packages</a></li>
<li><a href="https://taingram.org/blog/intro-to-emacs-tempo.html">Introduction to Emacs Tempo Code Templates</a> (<a href="https://mastodon.social/@tiang/114323627572903877">@tiang@mastodon.social</a>)</li>
<li><a href="https://www.n16f.net/blog/templating-in-emacs-with-tempo/">Nicolas Martyanoff: Templating in Emacs with Tempo</a> (<a href="https://irreal.org/blog/?p=11146">Irreal</a>)</li>
<li><a href="https://github.com/minad/tempel">tempel: TempEl - Simple templates for Emacs</a> (<a href="https://www.reddit.com/r/planetemacs/comments/s2ubul/tempel_tempel_simple_templates_for_emacs/">Reddit</a>)</li>
<li><a href="https://github.com/Crandel/tempel-collection">GitHub - Crandel/tempel-collection: Collection tempel templates</a> (<a href="https://www.reddit.com/r/emacs/comments/zd1l2v/new_package_tempelcollection/">Reddit</a>)</li>
<li><a href="https://github.com/fejfighter/eglot-tempel">eglot-tempel: bridge for tempel templates with eglot</a></li>
<li><a href="https://github.com/xFA25E/skempo">xFA25E/skempo: Enhance Emacs skeleton, tempo and abbrev.</a></li>
</ul></details></li>
</ul>



<ul class="org-ul">
<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><p>
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>?
</p>
<details class="code-details" style="padding: 1em;
                 border-radius: 15px;
                 font-size: 0.9em;
                 box-shadow: 0.05em 0.1em 5px 0.01em  #00000057;">
                  <summary><strong>Company</strong></summary>
<ul class="org-ul">
<li><a href="https://github.com/company-mode/company-mode/blob/master/NEWS.md#2023-10-04-0100">Company 0.10.0 is out</a> (<a href="https://www.reddit.com/r/emacs/comments/16zpk4h/company_0100_is_out/">Reddit</a>)</li>
<li><a href="https://www.reddit.com/r/emacs/comments/1flris4/company_100_released/">Company 1.0.0 released</a></li>
<li><a href="https://www.youtube.com/watch?v=hVA7KXDSUws">Emacs Auto-Completion with Company Mode</a> (01:01, 2025)</li>
<li><a href="https://www.youtube.com/watch?v=d5MyOy70lwg&amp;feature=youtu.be">Emacs Company Mode Is Bloody Good 2023_05_10_03:44:57</a> (9:44, 2023)</li>
<li><a href="https://youtu.be/96jn5A73-oQ">Inside Emacs #4 (part 1) ♦ Company-mode ♦♦♦ showcase ✔ source code ✔ faces</a> (<a href="https://reddit.com/r/emacs/comments/if11do/inside_emacs_4_part_1_companymode_showcase_source/">Reddit</a>)</li>
<li><a href="https://tychoish.com/post/better-company/">tycho garen: Better Company</a></li>
<li><a href="https://readingworldmagazine.com/emacs/2021-09-01-emacs-company-continued-first-thing-to-do-when-developing-with-emacs/">yuri tricys: Emacs Company-Mode Continued : The First Thing To Do When Developing With Emacs</a></li>
<li><a href="https://www.reddit.com/r/emacs/comments/rqewjw/companymode_now_has_a_manual/">company-mode now has a manual</a></li>
<li><a href="https://www.reddit.com/r/emacs/comments/pgr8ja/companymode_new_discussions_section_with/">company-mode: new Discussions section with hand-picked Q&amp;A, and better Contributing docs</a></li>
<li><a href="https://www.reddit.com/r/emacs/comments/jnllxh/package_companyipa/">{package} company-ipa</a></li>
<li><a href="https://www.reddit.com/r/emacs/comments/hl140v/companymanually_manually_build_your_company/">company-manually : manually build your company candidates</a></li>
<li><a href="https://github.com/tumashu/company-posframe">company-frame: A company extension, which let company use child frame as its candidate menu.</a> (<a href="https://reddit.com/r/planetemacs/comments/bc9yp3/companyframe_a_company_extension_which_let/">Reddit</a>)</li>
<li><a href="https://www.reddit.com/r/emacs/comments/l5mj0r/companywordfreqel_a_new_company_backend_for_human/">company-wordfreq.el – a new company backend for human language words according to their frequency</a></li>
<li><a href="https://manueluberti.eu/posts/2019-01-17-company-on-demand/">Make your company behave - manu.el</a></li>
</ul></details></li>
</ul></li>
</ul>



<details class="code-details" style="padding: 1em;
                 border-radius: 15px;
                 font-size: 0.9em;
                 box-shadow: 0.05em 0.1em 5px 0.01em  #00000057;">
                  <summary><strong>Corfu</strong></summary>
<ul class="org-ul">
<li><a href="https://i.redd.it/9g4h1bfzast61.png">[ELPA] Corfu (Completion Overlay Region FUnction)</a> (<a href="https://reddit.com/r/emacs/comments/msx6s1/elpa_corfu_completion_overlay_region_function/">Reddit</a>)</li>
<li><a href="https://kristofferbalintona.me/posts/202504050923/">Complement corfu, vertico, and completion-preview with prescient.el sorting</a> (<a href="https://www.reddit.com/r/emacs/comments/1js6xvw/complement_corfu_vertico_and_completionpreview/">Reddit</a>)</li>
<li><a href="https://www.reddit.com/r/emacs/comments/1izt989/corfu_completionpreviewmode/">corfu + completion-preview-mode</a></li>
<li><a href="https://midirus.com/emacs/tutorial#corfu">Corfu section of an Emacs tutorial</a></li>
<li><a href="https://github.com/minad/corfu/pull/178">corfu-doc merged into corfu main</a></li>
<li><a href="https://takeonrules.com/2022/01/17/switching-from-company-to-corfu-for-emacs-completion/">Jeremy Friesen: Switching from Company to Corfu for Emacs Completion</a></li>
<li><a href="https://www.reddit.com/r/emacs/comments/t38kkh/sample_corfu_kindicon_and_corfudoc_configuration/">Sample Corfu, Kind-icon, and Corfu-doc configuration</a></li>
</ul>


</details>
<details class="code-details" style="padding: 1em;
                 border-radius: 15px;
                 font-size: 0.9em;
                 box-shadow: 0.05em 0.1em 5px 0.01em  #00000057;">
                  <summary><strong>Other packages</strong></summary>
<ul class="org-ul">
<li><a href="https://www.reddit.com/r/emacs/comments/td0nth/sample_usage_of_cape_completion_at_point/">Sample usage of Cape — Completion At Point Extensions</a></li>
<li><a href="https://kristofferbalintona.me/posts/202203130102/">Tutorial on Cape: How to add completion functions to completion-at-point-functions and how to use cape's built-in completion utilities</a></li>
<li><a href="https://eshelyaron.com/posts/2023-11-17-completion-preview-in-emacs.html">Completion Preview in Emacs</a></li>
<li><a href="https://repo.or.cz/emacs-capf-autosuggest.git">emacs-capf-autosuggest: History autosuggestions for comint and eshell</a></li>
<li><a href="https://www.youtube.com/watch?v=_VQ_nwTT7J0">Emacs Mono Complete Package #emacs #coding #programming</a> (01:05, 2025)</li>
<li><a href="https://elpa.gnu.org/packages/aggressive-completion.html">aggressive-completion: Minor mode which automatically completes for you after a short delay</a></li>
<li><a href="https://lists.gnu.org/archive/html/emacs-devel/2021-04/msg00088.html">[GNU ELPA] New package proposal: aggressive-completion.el</a></li>
</ul>


</details>
<ul class="org-ul">
<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><p>
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?
</p>
<details class="code-details" style="padding: 1em;
                 border-radius: 15px;
                 font-size: 0.9em;
                 box-shadow: 0.05em 0.1em 5px 0.01em  #00000057;">
                  <summary><strong>Resources</strong></summary>
<ul class="org-ul">
<li>Ooh, looks like you can <a href="https://github.com/MiniApollo/snippy">translate VS Code / LSP snippets to Yasnippet</a> so you can take advantage of other people's <a href="https://github.com/rafamadriz/friendly-snippets">snippet collections</a>.</li>
<li><a href="https://www.reddit.com/r/emacs/comments/o7aktl/autocomplete_vs_companymode_in_2021/">auto-complete vs company-mode in 2021</a></li>
<li><a href="https://oylenshpeegul.gitlab.io/blog/posts/20250507_2/">Tim Heaney: Magic completions in rust-analyzer</a></li>
<li><a href="https://www.reddit.com/r/emacs/comments/1cpd72l/companyctags_v011_is_published/">company-ctags v0.1.1 is published</a></li>
<li><a href="https://github.com/osv/ac-html-csswatcher">ac-html-csswatcher: HTML Class and ID completion for emacs by using ac-html.el and csswatcher projects</a> (<a href="https://reddit.com/r/planetemacs/comments/lr488n/achtmlcsswatcher_html_class_and_id_completion_for/">Reddit</a>)</li>
<li><a href="https://github.com/racer-rust/emacs-racer">emacs-racer: Rust Auto-Complete-er</a></li>
<li><a href="https://github.com/atilaneves/ac-dcd">ac-dcd: Auto completion for Emacs using DCD: the D completion daemon</a></li>
<li><a href="https://github.com/abingham/emacs-ycmd">emacs-ycmd: client for ycmd, the code completion system</a></li>
</ul></details></li>
</ul>



<ul class="org-ul">
<li>Other links:
<ul class="org-ul">
<li><a href="https://takeonrules.com/2023/05/07/completion-at-point-function-capf-for-org-mode-links/">Jeremy Friesen: Completion at Point Function (CAPF) for Org-Mode Links</a> (<a href="https://irreal.org/blog/?p=11340">Irreal</a>)</li>
<li><a href="https://rahuljuliato.com/posts/in-buffer-icomplete">Rahul Juliato: Enhancing icomplete-vertical-mode in Emacs</a> (<a href="https://www.reddit.com/r/emacs/comments/1hhy6n9/enhancing_icompleteverticalmode_in_emacs/">Reddit</a>)</li>
<li><a href="https://manueluberti.eu/posts/2023-06-17-consult-completion/">Manuel Uberti: Tweaking Consult completion</a></li>
</ul></li>
</ul>

<ul class="org-ul">
<li><p>
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!)
</p>
<details class="code-details" style="padding: 1em;
                 border-radius: 15px;
                 font-size: 0.9em;
                 box-shadow: 0.05em 0.1em 5px 0.01em  #00000057;">
                  <summary><strong>Resources</strong></summary>
<ul class="org-ul">
<li><a href="https://karthinks.com/software/a-better-yank-pop-binding/">A better yank-pop binding</a> (<a href="https://reddit.com/r/emacs/comments/ndqvbm/a_better_yankpop_binding/">Reddit</a>)</li>
<li><a href="https://github.com/oantolin/completing-history">completing-history: Insert history items with completion</a></li>
<li><a href="https://beathagenlocher.com/stream/#00109">Typing emojis with :shortcodes: in Emacs</a></li>
<li><a href="https://www.youtube.com/watch?v=ZqWylt2lYtc">Interactive Cheatsheets in Emacs - icheat.el</a> (10:50, 2025, <a href="https://github.com/LeonardoE95/icheat">GitHub</a>)</li>
<li><a href="https://zeniesqis.statichost.eu/code/2025-10-24-emacs-grid-select/">Emacs Grid Select | Zenie's Qis</a> (<a href="https://piaille.fr/@Zenie/115498139080413433">@Zenie@piaille.fr</a>)</li>
<li><a href="https://spwhitton.name/blog/entry/sway-completing-read/">sway-completing-read</a></li>
<li><a href="https://sachachua.com/blog/2021/04/emacs-hydra-allow-completion-when-i-can-t-remember-the-command-name/">Sacha Chua: Emacs Hydra: Allow completion when I can't remember the command name</a></li>
<li><a href="https://github.com/alphapapa/ement.el">alphapapa/ement.el: Matrix client for Emacs (WIP)</a> (<a href="https://reddit.com/r/emacs/comments/ot1j42/alphapapaementel_matrix_client_for_emacs_wip/">Reddit</a>)</li>
<li><a href="https://codeberg.org/pulu/tidal-completion.el">pulu/tidal-completion.el: TidalCycles completion for Emacs - Codeberg.org</a> (<a href="https://anticapitalist.party/@ahihi/114772595905306760">@ahihi@anticapitalist.party</a>)</li>
<li><a href="https://github.com/bluzky/slash-commands">A small package to add slash-command to Emacs</a> (<a href="https://www.reddit.com/r/emacs/comments/1l9hsb6/a_small_package_to_add_slashcommand_to_emacs/">Reddit</a>)</li>
<li><a href="https://www.reddit.com/r/emacs/comments/1jb4vrx/bible_verse_of_the_day_as_emacs_dashboard_footer/">Bible Verse of The Day in Emacs &mdash; Now also on MELPA</a> (<a href="https://www.reddit.com/r/emacs/comments/1jz8c9u/bible_verse_of_the_day_in_emacs_now_also_on_melpa/">Reddit</a>) - update: insert verse, passage, or chapter at point</li>
<li><a href="https://michal.sapka.pl/2025/my-god-its-full-of-tags/">My god! It's full of tags!</a> - completion using sqlite data</li>
<li><a href="https://www.reddit.com/r/emacs/comments/7aaz7z/tip_a_simple_way_to_get_tab_completion_of/">Tip: A simple way to get tab completion of filenames in <b>scratch</b> (and probably other buffers)</a></li>
</ul></details></li>
</ul>



</div>
</div>
<div id="outline-container-emacs-carnival-february-2026-completion-things-i-want-to-learn-about" class="outline-3">
<h3 id="emacs-carnival-february-2026-completion-things-i-want-to-learn-about">Things I want to learn about</h3>
<div class="outline-text-3" id="text-emacs-carnival-february-2026-completion-things-i-want-to-learn-about">
<p>
For example, this month, I want to&hellip;
</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 class="on"><span class="task-done">&#x2611;</span> Notice where I keep typing the same kinds of things and define more snippets for them</li>
<li class="on"><span class="task-done">&#x2611;</span> Borrow ideas from other people's snippets: <a href="https://github.com/AndreaCrotti/yasnippet-snippets?tab=readme-ov-file">yasnippet-snippets</a> (css, elisp, js, python); <a href="https://github.com/rafamadriz/friendly-snippets">friendly-snippets (VS Code)</a></li>
<li class="on"><span class="task-done">&#x2611;</span> <a href="https://github.com/sachac/snippets">Share my snippets in a repository</a></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 class="on"><span class="task-done">&#x2611;</span> <a href="https://sachachua.com/blog/2026/02/emacs-completion-and-handling-accented-characters-with-orderless/">Complete French words in-buffer ignoring accented characters</a></li>
</ul></li>
<li class="on"><span class="task-done">&#x2611;</span> 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 - 2026-02-28: I put them into this post for now</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-emacs-carnival-february-2026-completion-how-to-submit-your-entry-entries" class="outline-3">
<h3 id="emacs-carnival-february-2026-completion-how-to-submit-your-entry-entries">How to submit your entry/entries</h3>
<div class="outline-text-3" id="text-emacs-carnival-february-2026-completion-how-to-submit-your-entry-entries">
<p>
(Update 2026-03-01: All done now! Feel free to write about the topic if it inspires you, though; I'd love to include a link to your notes in <a href="https://sachachua.com/blog/category/emacs-news">Emacs News</a>.)
</p>

<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 id="outline-container-emacs-carnival-february-2026-completion-a-reflection-on-hosting-emacs-carnival-this-month" class="outline-3">
<h3 id="emacs-carnival-february-2026-completion-a-reflection-on-hosting-emacs-carnival-this-month">A reflection on hosting Emacs Carnival this month</h3>
<div class="outline-text-3" id="text-emacs-carnival-february-2026-completion-a-reflection-on-hosting-emacs-carnival-this-month">
<p>
This was actually my first time hosting a blog carnival. Mapping out learning is one of my favourite things to do, and I enjoyed putting together a whole list of ideas and resources that might nudge people at every level. It was a great excuse to get around to improving parts of my workflow, not that I need an excuse to tinker with Emacs. Having the target date of Feb 28 encouraged me to get my notes together and actually post them, though. I also loved reading other people's posts, and I'm looking forward to integrating so many suggestions and ideas into my workflow. I think that treating the blog carnival as an opportunity to organize something like a study group or book club worked out well. I'd be glad to host in the future.
</p>

<p>
The Emacs Carnival theme for March is already up: <a href="https://sdf.org/~pkal/blog/emacs/mistakes.html">Mistakes and Misconceptions</a>, hosted by Philip Kaludercic. If you'd like to try hosting, you can edit the <a href="https://www.emacswiki.org/emacs/Carnival">Emacs Carnival wiki page</a> to add your name directly.
</p>

<p>
Thanks to everyone for reading and participating!
</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="https://social.sachachua.com/@sacha/statuses/01KG85HNK0WCA4KM88J00KE6TG" target="_blank" rel="noopener noreferrer">comment on Mastodon</a> or <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>]]></content>
		</entry>
</feed>