<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Emacs on August Feng</title>
    <link>https://blog.augustfeng.app/tags/emacs/</link>
    <description>Recent content in Emacs on August Feng</description>
    <generator>Hugo</generator>
    <language>en</language>
    <lastBuildDate>Wed, 20 Aug 2025 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://blog.augustfeng.app/tags/emacs/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>debugging Spacemacs initialization</title>
      <link>https://blog.augustfeng.app/articles/debugging-spacemacs-initialization/</link>
      <pubDate>Wed, 20 Aug 2025 00:00:00 +0000</pubDate>
      <guid>https://blog.augustfeng.app/articles/debugging-spacemacs-initialization/</guid>
      <description>&lt;div id=&#34;outline-container-headline-1&#34; class=&#34;outline-2&#34;&gt;&#xA;&lt;h2 id=&#34;headline-1&#34;&gt;&#xA;About&#xA;&lt;/h2&gt;&#xA;&lt;div id=&#34;outline-text-headline-1&#34; class=&#34;outline-text-2&#34;&gt;&#xA;&lt;p&gt;&#xA;Earlier today I introduced a bug somewhere in Emacs and decided to delete and&#xA;reinstall Spacemacs, while keeping my &lt;code&gt;~/.spacemacs&lt;/code&gt; configuration.&lt;/p&gt;&#xA;&lt;p&gt;&#xA;This introduced another bug where &lt;strong&gt;auth-source&lt;/strong&gt; was not able to read my Open API&#xA;API anymore. This expression kept evaluating to &lt;code&gt;nil&lt;/code&gt;:&lt;/p&gt;&#xA;&lt;div class=&#34;src src-elisp&#34;&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-elisp&#34; data-lang=&#34;elisp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  (auth-source-search&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   :host &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;api.openai.com&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   :user &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;apikey&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   :require &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#39;&lt;/span&gt;(:secret)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   )&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div id=&#34;outline-container-headline-2&#34; class=&#34;outline-2&#34;&gt;&#xA;&lt;h2 id=&#34;headline-2&#34;&gt;&#xA;Progress&#xA;&lt;/h2&gt;&#xA;&lt;div id=&#34;outline-text-headline-2&#34; class=&#34;outline-text-2&#34;&gt;&#xA;&lt;p&gt;&#xA;I noticed that if I evaluated &lt;code&gt;auth-source-forget-all-cached&lt;/code&gt;, the expression&#xA;above would successfully find my credentials.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Special Character Kill</title>
      <link>https://blog.augustfeng.app/articles/special-character-kill/</link>
      <pubDate>Tue, 19 Aug 2025 00:00:00 +0000</pubDate>
      <guid>https://blog.augustfeng.app/articles/special-character-kill/</guid>
      <description>&lt;div id=&#34;outline-container-headline-1&#34; class=&#34;outline-2&#34;&gt;&#xA;&lt;h2 id=&#34;headline-1&#34;&gt;&#xA;About&#xA;&lt;/h2&gt;&#xA;&lt;div id=&#34;outline-text-headline-1&#34; class=&#34;outline-text-2&#34;&gt;&#xA;&lt;p&gt;&#xA;I&amp;#39;m studying a few chapters from The Linux Programming Interface book, and I&amp;#39;m&#xA;learning about how the terminal driver can interpret special characters.&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div id=&#34;outline-container-headline-2&#34; class=&#34;outline-2&#34;&gt;&#xA;&lt;h2 id=&#34;headline-2&#34;&gt;&#xA;The KILL character&#xA;&lt;/h2&gt;&#xA;&lt;div id=&#34;outline-text-headline-2&#34; class=&#34;outline-text-2&#34;&gt;&#xA;&lt;p&gt;&#xA;The &lt;strong&gt;KILL&lt;/strong&gt; character (typically sent by &lt;code&gt;Control-U&lt;/code&gt;) should make the terminal&#xA;driver to delete the current line on the terminal.&lt;/p&gt;&#xA;&lt;p&gt;&#xA;We can use &lt;code&gt;stty -a&lt;/code&gt; to see what &lt;strong&gt;KILL&lt;/strong&gt; is bound to:&lt;/p&gt;&#xA;&lt;div class=&#34;src src-text&#34;&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;speed 9600 baud; 102 rows; 271 columns;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;lflags: icanon isig iexten echo echoe -echok echoke -echonl echoctl&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;-echoprt -altwerase -noflsh -tostop -flusho pendin -nokerninfo&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;-extproc&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;iflags: -istrip icrnl -inlcr -igncr ixon -ixoff ixany imaxbel iutf8&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;-ignbrk brkint -inpck -ignpar -parmrk&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;oflags: opost onlcr -oxtabs -onocr -onlret&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cflags: cread cs8 -parenb -parodd hupcl -clocal -cstopb -crtscts -dsrflow&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;-dtrflow -mdmbuf&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cchars: discard = ^O; dsusp = ^Y; eof = ^D; eol = &amp;lt;undef&amp;gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;eol2 = &amp;lt;undef&amp;gt;; erase = ^?; intr = ^C; kill = ^U; lnext = ^V;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;min = 1; quit = ^\; reprint = ^R; start = ^Q; status = ^T;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;stop = ^S; susp = ^Z; time = 0; werase = ^W;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;&#xA;Normally, the shell will also implement a kill-line behaviour on &lt;code&gt;Control-U&lt;/code&gt;&#xA;though, so if the terminal driver doesn&amp;#39;t clear it, at least the shell will:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Creating menu items with emacs</title>
      <link>https://blog.augustfeng.app/articles/creating-menu-items-with-emacs/</link>
      <pubDate>Mon, 21 Apr 2025 00:00:00 +0000</pubDate>
      <guid>https://blog.augustfeng.app/articles/creating-menu-items-with-emacs/</guid>
      <description>&lt;div id=&#34;outline-container-headline-1&#34; class=&#34;outline-2&#34;&gt;&#xA;&lt;h2 id=&#34;headline-1&#34;&gt;&#xA;About&#xA;&lt;/h2&gt;&#xA;&lt;div id=&#34;outline-text-headline-1&#34; class=&#34;outline-text-2&#34;&gt;&#xA;&lt;p&gt;&#xA;We need three things in order to create a new menu on MacOS for emacs.&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div id=&#34;outline-container-headline-2&#34; class=&#34;outline-2&#34;&gt;&#xA;&lt;h2 id=&#34;headline-2&#34;&gt;&#xA;Keymap&#xA;&lt;/h2&gt;&#xA;&lt;div id=&#34;outline-text-headline-2&#34; class=&#34;outline-text-2&#34;&gt;&#xA;&lt;p&gt;&#xA;First we need to create a keymap. This is also used by modes to create&#xA;keybindings.&lt;/p&gt;&#xA;&lt;div class=&#34;src src-elisp&#34;&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-elisp&#34; data-lang=&#34;elisp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  (defvar foobar (&lt;span style=&#34;color:#a6e22e&#34;&gt;make-sparse-keymap&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;foobar&amp;#34;&lt;/span&gt;))&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div id=&#34;outline-container-headline-3&#34; class=&#34;outline-2&#34;&gt;&#xA;&lt;h2 id=&#34;headline-3&#34;&gt;&#xA;define-key&#xA;&lt;/h2&gt;&#xA;&lt;div id=&#34;outline-text-headline-3&#34; class=&#34;outline-text-2&#34;&gt;&#xA;&lt;p&gt;&#xA;The &lt;code&gt;define-key&lt;/code&gt; function is used to map keys to a function. For example, this&#xA;following function will write &amp;#34;helloworld&amp;#34; on &lt;code&gt;C-c z&lt;/code&gt;:&lt;/p&gt;&#xA;&lt;div class=&#34;src src-elisp&#34;&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-elisp&#34; data-lang=&#34;elisp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  (&lt;span style=&#34;color:#a6e22e&#34;&gt;define-key&lt;/span&gt; (&lt;span style=&#34;color:#a6e22e&#34;&gt;current-global-map&lt;/span&gt;) (kbd &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;C-c z&amp;#34;&lt;/span&gt;) (lambda () (interactive) (&lt;span style=&#34;color:#a6e22e&#34;&gt;message&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;helloworld&amp;#34;&lt;/span&gt;)))&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;&#xA;It&amp;#39;s also used to create menu items:&lt;/p&gt;</description>
    </item>
    <item>
      <title>lsp-mode and web-mode hanging on css completion</title>
      <link>https://blog.augustfeng.app/articles/lsp-mode-and-web-mode-hanging-on-css-completion/</link>
      <pubDate>Wed, 16 Apr 2025 00:00:00 +0000</pubDate>
      <guid>https://blog.augustfeng.app/articles/lsp-mode-and-web-mode-hanging-on-css-completion/</guid>
      <description>&lt;div id=&#34;outline-container-headline-1&#34; class=&#34;outline-2&#34;&gt;&#xA;&lt;h2 id=&#34;headline-1&#34;&gt;&#xA;About&#xA;&lt;/h2&gt;&#xA;&lt;div id=&#34;outline-text-headline-1&#34; class=&#34;outline-text-2&#34;&gt;&#xA;&lt;p&gt;&#xA;I&amp;#39;m using Spacemacs, and the Emacs UI hangs for a few seconds when I select a&#xA;completion value while authoring css properties.&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div id=&#34;outline-container-headline-2&#34; class=&#34;outline-2&#34;&gt;&#xA;&lt;h2 id=&#34;headline-2&#34;&gt;&#xA;Studying the completion framework&#xA;&lt;/h2&gt;&#xA;&lt;div id=&#34;outline-text-headline-2&#34; class=&#34;outline-text-2&#34;&gt;&#xA;&lt;p&gt;&#xA;The completion framework provided by Spacemacs is I&amp;#39;m using is &lt;a href=&#34;https://company-mode.github.io&#34;&gt;company&lt;/a&gt; and the&#xA;completion backend selected when I edit html is completion-capf which is bridge&#xA;to the &lt;a href=&#34;https://www.gnu.org/software/emacs/manual/html_node/elisp/Completion-in-Buffers.html#Completion-in-Buffers&#34;&gt;native completion system in Emacs&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;&#xA;We can see which completion backend is being used by using the &lt;code&gt;M-x:&#xA;company-diag&lt;/code&gt; command.&lt;/p&gt;</description>
    </item>
    <item>
      <title>etags as xref backend functions</title>
      <link>https://blog.augustfeng.app/articles/etags-as-xref-backend-functions/</link>
      <pubDate>Fri, 14 Feb 2025 00:00:00 +0000</pubDate>
      <guid>https://blog.augustfeng.app/articles/etags-as-xref-backend-functions/</guid>
      <description>&lt;div id=&#34;outline-container-headline-1&#34; class=&#34;outline-2&#34;&gt;&#xA;&lt;h2 id=&#34;headline-1&#34;&gt;&#xA;About&#xA;&lt;/h2&gt;&#xA;&lt;div id=&#34;outline-text-headline-1&#34; class=&#34;outline-text-2&#34;&gt;&#xA;&lt;p&gt;&#xA;I built the &lt;strong&gt;TAGS&lt;/strong&gt; file in some open source projects but Emacs&amp;#39;s&#xA;&lt;code&gt;xref-find-definitions&lt;/code&gt; was failing me.&lt;/p&gt;&#xA;&lt;p&gt;&#xA;I remembered that I had encountered this issue a few weeks ago and completely&#xA;forgot my learnings.&lt;/p&gt;&#xA;&lt;p&gt;&#xA;I&amp;#39;m going to be documenting them here now in hopes that I&amp;#39;ll remember for next&#xA;time.&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div id=&#34;outline-container-headline-2&#34; class=&#34;outline-2&#34;&gt;&#xA;&lt;h2 id=&#34;headline-2&#34;&gt;&#xA;Debugging&#xA;&lt;/h2&gt;&#xA;&lt;div id=&#34;outline-text-headline-2&#34; class=&#34;outline-text-2&#34;&gt;&#xA;&lt;p&gt;&#xA;I authored a very bare c program and built the &lt;strong&gt;TAGS&lt;/strong&gt; file. Emacs was&#xA;successfully finding the definitions. So what&amp;#39;s up?&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to number a list of lines in org mode</title>
      <link>https://blog.augustfeng.app/articles/how-to-number-a-list-of-lines-in-org-mode/</link>
      <pubDate>Sun, 02 Feb 2025 00:00:00 +0000</pubDate>
      <guid>https://blog.augustfeng.app/articles/how-to-number-a-list-of-lines-in-org-mode/</guid>
      <description>&lt;div id=&#34;outline-container-headline-1&#34; class=&#34;outline-2&#34;&gt;&#xA;&lt;h2 id=&#34;headline-1&#34;&gt;&#xA;About&#xA;&lt;/h2&gt;&#xA;&lt;div id=&#34;outline-text-headline-1&#34; class=&#34;outline-text-2&#34;&gt;&#xA;&lt;p&gt;&#xA;I never had to number a list of lines so many times until my most recent study&#xA;on TCP sequence numbers.&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div id=&#34;outline-container-headline-2&#34; class=&#34;outline-2&#34;&gt;&#xA;&lt;h2 id=&#34;headline-2&#34;&gt;&#xA;How&#xA;&lt;/h2&gt;&#xA;&lt;div id=&#34;outline-text-headline-2&#34; class=&#34;outline-text-2&#34;&gt;&#xA;&lt;p&gt;&#xA;Paste a bunch of lines, and use the &lt;code&gt;string-rectangle&lt;/code&gt; command to insert &amp;#34;1.&amp;#34; at&#xA;the beginning:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;hello&lt;/li&gt;&#xA;&lt;li&gt;world&lt;/li&gt;&#xA;&lt;li&gt;.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;&#xA;Finally, move the cursor to any of thes lines and press &lt;code&gt;C-c&lt;/code&gt;:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;hello&lt;/li&gt;&#xA;&lt;li&gt;world&lt;/li&gt;&#xA;&lt;li&gt;.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>A study on default font in emacs on macos</title>
      <link>https://blog.augustfeng.app/articles/a-study-on-default-font-in-emacs-on-macos/</link>
      <pubDate>Thu, 21 Nov 2024 00:00:00 +0000</pubDate>
      <guid>https://blog.augustfeng.app/articles/a-study-on-default-font-in-emacs-on-macos/</guid>
      <description>&lt;div id=&#34;outline-container-headline-1&#34; class=&#34;outline-2&#34;&gt;&#xA;&lt;h2 id=&#34;headline-1&#34;&gt;&#xA;About&#xA;&lt;/h2&gt;&#xA;&lt;div id=&#34;outline-text-headline-1&#34; class=&#34;outline-text-2&#34;&gt;&#xA;&lt;p&gt;&#xA;An unconfigured Emacs on an unconfigured MacOS will use this font:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;-&lt;strong&gt;-Menlo-regular-normal-normal-&lt;/strong&gt;-12-&lt;strong&gt;-&lt;/strong&gt;-*-m-0-iso10646-1&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;&#xA;Why?&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div id=&#34;outline-container-headline-2&#34; class=&#34;outline-2&#34;&gt;&#xA;&lt;h2 id=&#34;headline-2&#34;&gt;&#xA;Discovery&#xA;&lt;/h2&gt;&#xA;&lt;div id=&#34;outline-text-headline-2&#34; class=&#34;outline-text-2&#34;&gt;&#xA;&lt;p&gt;&#xA;The &lt;code&gt;x-create-frame&lt;/code&gt; emacs lisp function will use the &lt;a href=&#34;https://developer.apple.com/documentation/appkit/nsfont/userfixedpitchfont(ofsize:)?language=objc&#34;&gt;userFixedPitchFontOfSize&lt;/a&gt;&#xA;case to identify the default monospace font.&lt;/p&gt;&#xA;&lt;p&gt;&#xA;This is defined in the &lt;code&gt;nsfns.m&lt;/code&gt; file.&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div id=&#34;outline-container-headline-3&#34; class=&#34;outline-2&#34;&gt;&#xA;&lt;h2 id=&#34;headline-3&#34;&gt;&#xA;Minimal Reproducer (Sorta)&#xA;&lt;/h2&gt;&#xA;&lt;div id=&#34;outline-text-headline-3&#34; class=&#34;outline-text-2&#34;&gt;&#xA;&lt;div class=&#34;src src-objc&#34;&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-objc&#34; data-lang=&#34;objc&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;int&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;main&lt;/span&gt;(&lt;span style=&#34;color:#66d9ef&#34;&gt;int&lt;/span&gt; argc, &lt;span style=&#34;color:#66d9ef&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;char&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt; argv[]) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;@autoreleasepool&lt;/span&gt; {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      CTFontRef name &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; CTFontCreateUIFontForLanguage(kCTFontUIFontUserFixedPitch, &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;, NULL);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      CGFloat size &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; CTFontGetSize(name);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      NSLog(&lt;span style=&#34;color:#e6db74&#34;&gt;@&amp;#34;User Fixed Pitch Font: %@, Default Size: %.2f&amp;#34;&lt;/span&gt;, name, size);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  }&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;2024-11-21 23:56:50.349 a.out[19798:994265] User Fixed Pitch Font: &amp;lt;CTFont: 0x135f06a70&amp;gt;{name = Menlo-Regular, size = 10.000000, matrix = 0x0, descriptor = &amp;lt;CTFontDescriptor: 0x600000808960&amp;gt;{attributes = {&#xA;    NSFontNameAttribute = &amp;#34;Menlo-Regular&amp;#34;;&#xA;}&amp;gt;}}, Default Size: 10.00&lt;/p&gt;</description>
    </item>
    <item>
      <title>Magit workflow for contributing to oss</title>
      <link>https://blog.augustfeng.app/articles/magit-workflow-for-contributing-to-oss/</link>
      <pubDate>Sat, 22 Jun 2024 00:00:00 +0000</pubDate>
      <guid>https://blog.augustfeng.app/articles/magit-workflow-for-contributing-to-oss/</guid>
      <description>&lt;div id=&#34;outline-container-headline-1&#34; class=&#34;outline-2&#34;&gt;&#xA;&lt;h2 id=&#34;headline-1&#34;&gt;&#xA;About&#xA;&lt;/h2&gt;&#xA;&lt;div id=&#34;outline-text-headline-1&#34; class=&#34;outline-text-2&#34;&gt;&#xA;&lt;p&gt;&#xA;It&amp;#39;s been only a little while since I made a pull request to an open-source&#xA;project and I forgot the conclusion I had about setting up my local git&#xA;repository.&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div id=&#34;outline-container-headline-2&#34; class=&#34;outline-2&#34;&gt;&#xA;&lt;h2 id=&#34;headline-2&#34;&gt;&#xA;Conclusion&#xA;&lt;/h2&gt;&#xA;&lt;div id=&#34;outline-text-headline-2&#34; class=&#34;outline-text-2&#34;&gt;&#xA;&lt;p&gt;&#xA;I structure my file system with git repositories from github so that it&#xA;replicates the &lt;code&gt;&amp;lt;OWNER&amp;gt;/&amp;lt;REPO&amp;gt;&lt;/code&gt; in github.&lt;/p&gt;&#xA;&lt;p&gt;&#xA;Earlier, I nearly duplicated the repository to &lt;code&gt;augustfengd/&amp;lt;REPO&amp;gt;&lt;/code&gt; because the&#xA;repository will technically exist as as fork and I will be pushing there. &lt;strong&gt;No.&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Instant previews using grip</title>
      <link>https://blog.augustfeng.app/articles/instant-previews-using-grip/</link>
      <pubDate>Wed, 19 Jun 2024 00:00:00 +0000</pubDate>
      <guid>https://blog.augustfeng.app/articles/instant-previews-using-grip/</guid>
      <description>&lt;div id=&#34;outline-container-headline-1&#34; class=&#34;outline-2&#34;&gt;&#xA;&lt;h2 id=&#34;headline-1&#34;&gt;&#xA;About&#xA;&lt;/h2&gt;&#xA;&lt;div id=&#34;outline-text-headline-1&#34; class=&#34;outline-text-2&#34;&gt;&#xA;&lt;p&gt;&#xA;A few years ago, I had discovered a setup for live previewing markdown/org files&#xA;in Emacs. It took me a little while to remember how I did that, and implement it&#xA;again on my new work machine.&lt;/p&gt;&#xA;&lt;p&gt;&#xA;I don&amp;#39;t want this to happen again, so I am documenting the steps for the future&#xA;me.&lt;/p&gt;&#xA;&lt;p&gt;&#xA;:)&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div id=&#34;outline-container-headline-2&#34; class=&#34;outline-2&#34;&gt;&#xA;&lt;h2 id=&#34;headline-2&#34;&gt;&#xA;Implementation&#xA;&lt;/h2&gt;&#xA;&lt;div id=&#34;outline-text-headline-2&#34; class=&#34;outline-text-2&#34;&gt;&#xA;&lt;div id=&#34;outline-container-headline-3&#34; class=&#34;outline-3&#34;&gt;&#xA;&lt;h3 id=&#34;headline-3&#34;&gt;&#xA;xwidgets support&#xA;&lt;/h3&gt;&#xA;&lt;div id=&#34;outline-text-headline-3&#34; class=&#34;outline-text-3&#34;&gt;&#xA;&lt;p&gt;&#xA;Emacs needs to be buitl with xwidgets support.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Magit commit issues on wsl2</title>
      <link>https://blog.augustfeng.app/articles/magit-commit-issues-on-wsl2/</link>
      <pubDate>Sun, 18 Feb 2024 00:00:00 +0000</pubDate>
      <guid>https://blog.augustfeng.app/articles/magit-commit-issues-on-wsl2/</guid>
      <description>&lt;div id=&#34;outline-container-headline-1&#34; class=&#34;outline-2&#34;&gt;&#xA;&lt;h2 id=&#34;headline-1&#34;&gt;&#xA;About&#xA;&lt;/h2&gt;&#xA;&lt;div id=&#34;outline-text-headline-1&#34; class=&#34;outline-text-2&#34;&gt;&#xA;&lt;p&gt;&#xA;The &lt;strong&gt;magit&lt;/strong&gt; package uses the &lt;em&gt;with-editor&lt;/em&gt; package to spin up an emacsclient in&#xA;order to run subprocesses. This is used when drafting commit messages.&lt;/p&gt;&#xA;&lt;p&gt;&#xA;With a vanilla installation of Ubuntu 22.04, I&amp;#39;m &lt;strong&gt;not&lt;/strong&gt; able to spin up an&#xA;emacsclient:&lt;/p&gt;&#xA;&lt;div class=&#34;src src-shell&#34;&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  emacsclient helloworld&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#75715e&#34;&gt;# emacsclient: can&amp;#39;t connect to /run/user/1000//emacs/server: Permission denied&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#75715e&#34;&gt;# emacsclient: No socket or alternate editor.  Please use:&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#75715e&#34;&gt;# &lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#75715e&#34;&gt;#         --socket-name&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#75715e&#34;&gt;#         --server-file      (or environment variable EMACS_SERVER_FILE&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;&#xA;I&amp;#39;ve fixed this by changing the ownership of that directory to myself: &lt;code&gt;sudo&#xA;chown ${USER}:${USER}  $XDG_RUNTIME_DIR&lt;/code&gt; and it works!&lt;/p&gt;</description>
    </item>
    <item>
      <title>What are spinoff and spinouts in magit</title>
      <link>https://blog.augustfeng.app/articles/what-are-spinoff-and-spinouts-in-magit/</link>
      <pubDate>Thu, 14 Sep 2023 00:00:00 +0000</pubDate>
      <guid>https://blog.augustfeng.app/articles/what-are-spinoff-and-spinouts-in-magit/</guid>
      <description>&lt;div id=&#34;outline-container-headline-1&#34; class=&#34;outline-2&#34;&gt;&#xA;&lt;h2 id=&#34;headline-1&#34;&gt;&#xA;Spinoff&#xA;&lt;/h2&gt;&#xA;&lt;div id=&#34;outline-text-headline-1&#34; class=&#34;outline-text-2&#34;&gt;&#xA;&lt;p&gt;&#xA;Let&amp;#39;s assume the following working git tree:&lt;/p&gt;&#xA;&lt;div class=&#34;src src-text&#34;&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;* 465318a (HEAD -&amp;gt; foobar) helloworld&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;* f4dd687 (master) init&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;&#xA;A &lt;code&gt;magit-branch-spinoff&lt;/code&gt; will create a new branch &lt;strong&gt;foobaz&lt;/strong&gt; which takes&#xA;&lt;strong&gt;foobar&lt;/strong&gt;&amp;#39;s place, and &lt;strong&gt;foobar&lt;/strong&gt; will be moved to the branch&amp;#39;s &lt;em&gt;upstream&lt;/em&gt;:&lt;/p&gt;&#xA;&lt;div class=&#34;src src-text&#34;&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;* 465318a (HEAD -&amp;gt; foobaz) helloworld&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;* f4dd687 (master, foobar) init&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div id=&#34;outline-container-headline-2&#34; class=&#34;outline-2&#34;&gt;&#xA;&lt;h2 id=&#34;headline-2&#34;&gt;&#xA;Spinout&#xA;&lt;/h2&gt;&#xA;&lt;div id=&#34;outline-text-headline-2&#34; class=&#34;outline-text-2&#34;&gt;&#xA;&lt;p&gt;&#xA;A &lt;code&gt;magit-branch-spinoff&lt;/code&gt; will perform the same operations of&#xA;&lt;code&gt;magit-branch-spinoff&lt;/code&gt;, however we&amp;#39;ll stay on the current branch.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Opening Emacs from windows</title>
      <link>https://blog.augustfeng.app/articles/opening-emacs-from-windows/</link>
      <pubDate>Sun, 10 Sep 2023 00:00:00 +0000</pubDate>
      <guid>https://blog.augustfeng.app/articles/opening-emacs-from-windows/</guid>
      <description>&lt;div id=&#34;outline-container-headline-1&#34; class=&#34;outline-2&#34;&gt;&#xA;&lt;h2 id=&#34;headline-1&#34;&gt;&#xA;About&#xA;&lt;/h2&gt;&#xA;&lt;div id=&#34;outline-text-headline-1&#34; class=&#34;outline-text-2&#34;&gt;&#xA;&lt;p&gt;&#xA;For various reasons, I prefer running a Emacs from WSL. I also exclusively it&#xA;with a window system.&lt;/p&gt;&#xA;&lt;p&gt;&#xA;Wouldn&amp;#39;t it be nice to open Emacs directly from Windows?&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div id=&#34;outline-container-headline-2&#34; class=&#34;outline-2&#34;&gt;&#xA;&lt;h2 id=&#34;headline-2&#34;&gt;&#xA;Issue&#xA;&lt;/h2&gt;&#xA;&lt;div id=&#34;outline-text-headline-2&#34; class=&#34;outline-text-2&#34;&gt;&#xA;&lt;p&gt;&#xA;In order to open Emacs, I run it from a shell as it requires some environment&#xA;variables which are configured from the login scripts. As a result, I need to&#xA;keep a terminal window open for that shell.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Learning gnus</title>
      <link>https://blog.augustfeng.app/articles/learning-gnus/</link>
      <pubDate>Mon, 14 Aug 2023 00:00:00 +0000</pubDate>
      <guid>https://blog.augustfeng.app/articles/learning-gnus/</guid>
      <description>&lt;div id=&#34;outline-container-headline-1&#34; class=&#34;outline-2&#34;&gt;&#xA;&lt;h2 id=&#34;headline-1&#34;&gt;&#xA;Shortcuts&#xA;&lt;/h2&gt;&#xA;&lt;div id=&#34;outline-text-headline-1&#34; class=&#34;outline-text-2&#34;&gt;&#xA;&lt;div id=&#34;outline-container-headline-2&#34; class=&#34;outline-3&#34;&gt;&#xA;&lt;h3 id=&#34;headline-2&#34;&gt;&#xA;The group buffer&#xA;&lt;/h3&gt;&#xA;&lt;div id=&#34;outline-text-headline-2&#34; class=&#34;outline-text-3&#34;&gt;&#xA;&lt;div id=&#34;outline-container-headline-3&#34; class=&#34;outline-4&#34;&gt;&#xA;&lt;h4 id=&#34;headline-3&#34;&gt;&#xA;commands to change views&#xA;&lt;/h4&gt;&#xA;&lt;div id=&#34;outline-text-headline-3&#34; class=&#34;outline-text-4&#34;&gt;&#xA;&lt;p&gt;&#xA;&lt;kbd&gt; A A &lt;/kbd&gt; (gnus-group-list-active): list all groups that are available on the servers.&lt;/p&gt;&#xA;&lt;p&gt;&#xA;&lt;kbd&gt; L &lt;/kbd&gt; , &lt;kbd&gt; A u &lt;/kbd&gt; (gnus-group-list-all-groups): list all groups.&lt;/p&gt;&#xA;&lt;p&gt;&#xA;&lt;kbd&gt; l &lt;/kbd&gt; (gnus-group-list-groups): list groups with unread articles.&lt;/p&gt;&#xA;&lt;p&gt;&#xA;&lt;kbd&gt; t &lt;/kbd&gt; (gnus-topic-mode): toggle the minor topic mode.&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div id=&#34;outline-container-headline-4&#34; class=&#34;outline-3&#34;&gt;&#xA;&lt;h3 id=&#34;headline-4&#34;&gt;&#xA;Summary buffer&#xA;&lt;/h3&gt;&#xA;&lt;div id=&#34;outline-text-headline-4&#34; class=&#34;outline-text-3&#34;&gt;&#xA;&lt;p&gt;&#xA;&lt;kbd&gt; M-g &lt;/kbd&gt; (gnus-summary-rescan-group): show read messages. this seems to only work when all articles are read?&lt;/p&gt;&#xA;&lt;p&gt;&#xA;&lt;kbd&gt; ! &lt;/kbd&gt; or &lt;kbd&gt; u &lt;/kbd&gt; (gnus-summary-tick-article-forward): tick the message.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Exploring org-agenda workflows</title>
      <link>https://blog.augustfeng.app/articles/exploring-org-agenda-workflows/</link>
      <pubDate>Mon, 26 Jun 2023 00:00:00 +0000</pubDate>
      <guid>https://blog.augustfeng.app/articles/exploring-org-agenda-workflows/</guid>
      <description>&lt;div id=&#34;outline-container-headline-1&#34; class=&#34;outline-2&#34;&gt;&#xA;&lt;h2 id=&#34;headline-1&#34;&gt;&#xA;Cycling between agenda files&#xA;&lt;/h2&gt;&#xA;&lt;div id=&#34;outline-text-headline-1&#34; class=&#34;outline-text-2&#34;&gt;&#xA;&lt;p&gt;&#xA;&lt;kbd&gt; C-&amp;#39; &lt;/kbd&gt;: Cycle through the files in&#xA;‘org-agenda-files’.&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div id=&#34;outline-container-headline-2&#34; class=&#34;outline-2&#34;&gt;&#xA;&lt;h2 id=&#34;headline-2&#34;&gt;&#xA;Filtering agenda items&#xA;&lt;/h2&gt;&#xA;&lt;div id=&#34;outline-text-headline-2&#34; class=&#34;outline-text-2&#34;&gt;&#xA;&lt;p&gt;&#xA;&lt;kbd&gt; \ &lt;/kbd&gt;: Keep only those lines in the agenda buffer&#xA;that have a specific tag.&lt;/p&gt;&#xA;&lt;p&gt;&#xA;ref: &lt;a href=&#34;https://orgmode.org/manual/Filtering_002flimiting-agenda-items.html&#34;&gt;https://orgmode.org/manual/Filtering_002flimiting-agenda-items.html&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Debugging Spacemacs packages</title>
      <link>https://blog.augustfeng.app/articles/debugging-spacemacs-packages/</link>
      <pubDate>Thu, 22 Jun 2023 00:00:00 +0000</pubDate>
      <guid>https://blog.augustfeng.app/articles/debugging-spacemacs-packages/</guid>
      <description>&lt;div id=&#34;outline-container-headline-1&#34; class=&#34;outline-2&#34;&gt;&#xA;&lt;h2 id=&#34;headline-1&#34;&gt;&#xA;About&#xA;&lt;/h2&gt;&#xA;&lt;div id=&#34;outline-text-headline-1&#34; class=&#34;outline-text-2&#34;&gt;&#xA;&lt;p&gt;&#xA;An on-going documentation where I save knowledge gained from debugging emacs&#xA;related things.&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div id=&#34;outline-container-headline-2&#34; class=&#34;outline-2&#34;&gt;&#xA;&lt;h2 id=&#34;headline-2&#34;&gt;&#xA;spacemacs recipes&#xA;&lt;/h2&gt;&#xA;&lt;div id=&#34;outline-text-headline-2&#34; class=&#34;outline-text-2&#34;&gt;&#xA;&lt;div class=&#34;src src-elisp&#34;&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-elisp&#34; data-lang=&#34;elisp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  (oref (configuration-layer/get-package &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;lsp-mode&lt;/span&gt;) :location)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div id=&#34;outline-container-headline-3&#34; class=&#34;outline-2&#34;&gt;&#xA;&lt;h2 id=&#34;headline-3&#34;&gt;&#xA;Referencing layer packages locally&#xA;&lt;/h2&gt;&#xA;&lt;div id=&#34;outline-text-headline-3&#34; class=&#34;outline-text-2&#34;&gt;&#xA;&lt;div id=&#34;outline-container-headline-4&#34; class=&#34;outline-3&#34;&gt;&#xA;&lt;h3 id=&#34;headline-4&#34;&gt;&#xA;using local&#xA;&lt;/h3&gt;&#xA;&lt;div id=&#34;outline-text-headline-4&#34; class=&#34;outline-text-3&#34;&gt;&#xA;&lt;p&gt;&#xA;The Spacemacs&amp;#39; documentation includes an FAQ answer on &lt;a href=&#34;https://develop.spacemacs.org/doc/FAQ.html#how-to-override-a-layer-package&#34;&gt;How to override a layer&#xA;package&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;&#xA;I have the &lt;code&gt;emacs-lsp&lt;/code&gt; package cloned to&#xA;&lt;code&gt;/Users/august.feng/repositories/gh/emacs-lsp/lsp-mode&lt;/code&gt;, so I&amp;#39;ll be creating a&#xA;symbolic link to that, and respectively adding &lt;code&gt;(lsp-mode :location local)&lt;/code&gt; to&#xA;&lt;code&gt;dotspacemacs-additional-packages&lt;/code&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Learning yasnippets package</title>
      <link>https://blog.augustfeng.app/articles/learning-yasnippets-package/</link>
      <pubDate>Thu, 22 Jun 2023 00:00:00 +0000</pubDate>
      <guid>https://blog.augustfeng.app/articles/learning-yasnippets-package/</guid>
      <description>&lt;div id=&#34;outline-container-headline-1&#34; class=&#34;outline-2&#34;&gt;&#xA;&lt;h2 id=&#34;headline-1&#34;&gt;&#xA;Creating snippets&#xA;&lt;/h2&gt;&#xA;&lt;div id=&#34;outline-text-headline-1&#34; class=&#34;outline-text-2&#34;&gt;&#xA;&lt;p&gt;&#xA;The command &lt;code&gt;yas-new-snippet&lt;/code&gt; will open a form for creating snippets.&lt;/p&gt;&#xA;&lt;p&gt;&#xA;The &lt;code&gt;# name:&lt;/code&gt; and &lt;code&gt;# key:&lt;/code&gt; fields describe the name of the snippet, and the&#xA;abbreviation of the snippets before expansion.&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div id=&#34;outline-container-headline-2&#34; class=&#34;outline-2&#34;&gt;&#xA;&lt;h2 id=&#34;headline-2&#34;&gt;&#xA;Authoring snippets&#xA;&lt;/h2&gt;&#xA;&lt;div id=&#34;outline-text-headline-2&#34; class=&#34;outline-text-2&#34;&gt;&#xA;&lt;div id=&#34;outline-container-headline-3&#34; class=&#34;outline-3&#34;&gt;&#xA;&lt;h3 id=&#34;headline-3&#34;&gt;&#xA;embedded lisp code in template&#xA;&lt;/h3&gt;&#xA;&lt;div id=&#34;outline-text-headline-3&#34; class=&#34;outline-text-3&#34;&gt;&#xA;&lt;p&gt;&#xA;Wrap the lisp code with &lt;code&gt;`&lt;/code&gt;. This will be evaluated upon expansion.&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div id=&#34;outline-container-headline-4&#34; class=&#34;outline-3&#34;&gt;&#xA;&lt;h3 id=&#34;headline-4&#34;&gt;&#xA;avoiding auto indentations&#xA;&lt;/h3&gt;&#xA;&lt;div id=&#34;outline-text-headline-4&#34; class=&#34;outline-text-3&#34;&gt;&#xA;&lt;p&gt;&#xA;The leading space before $2 is deleted when the template is inserted. We need to&#xA;use the directive &lt;code&gt;# expand-env: ((yas-indent-line &amp;#39;fixed))&lt;/code&gt; to avoid that.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Debugging the jka-compr package</title>
      <link>https://blog.augustfeng.app/articles/debugging-the-jka-compr-package/</link>
      <pubDate>Tue, 20 Jun 2023 00:00:00 +0000</pubDate>
      <guid>https://blog.augustfeng.app/articles/debugging-the-jka-compr-package/</guid>
      <description>&lt;div id=&#34;outline-container-headline-1&#34; class=&#34;outline-2&#34;&gt;&#xA;&lt;h2 id=&#34;headline-1&#34;&gt;&#xA;About&#xA;&lt;/h2&gt;&#xA;&lt;div id=&#34;outline-text-headline-1&#34; class=&#34;outline-text-2&#34;&gt;&#xA;&lt;p&gt;&#xA;The &lt;strong&gt;jka-compr&lt;/strong&gt; package allows us to read compressed files as if they were&#xA;uncompressed. It uses an external tool in the backend, &lt;code&gt;gunzip&lt;/code&gt; in the case of&#xA;MacOS as seen in the source code.&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div id=&#34;outline-container-headline-2&#34; class=&#34;outline-2&#34;&gt;&#xA;&lt;h2 id=&#34;headline-2&#34;&gt;&#xA;Issue&#xA;&lt;/h2&gt;&#xA;&lt;div id=&#34;outline-text-headline-2&#34; class=&#34;outline-text-2&#34;&gt;&#xA;&lt;p&gt;&#xA;There seems to be an issue with a locally compiled emacs (29.0) where Spacemacs&#xA;ignores the &lt;code&gt;jka-compr.elc&lt;/code&gt; files, and tries to load the compressed&#xA;&lt;code&gt;jka-compr.el.gz&lt;/code&gt;, which is a circular dependency / bootstrap issue.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Learning session with melpa and quelpa</title>
      <link>https://blog.augustfeng.app/articles/learning-session-with-melpa-and-quelpa/</link>
      <pubDate>Mon, 03 Apr 2023 00:00:00 +0000</pubDate>
      <guid>https://blog.augustfeng.app/articles/learning-session-with-melpa-and-quelpa/</guid>
      <description>&lt;div id=&#34;outline-container-headline-1&#34; class=&#34;outline-2&#34;&gt;&#xA;&lt;h2 id=&#34;headline-1&#34;&gt;&#xA;About&#xA;&lt;/h2&gt;&#xA;&lt;div id=&#34;outline-text-headline-1&#34; class=&#34;outline-text-2&#34;&gt;&#xA;&lt;p&gt;&#xA;These are some notes I kept when messing around with the melpa packaging system.&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div id=&#34;outline-container-headline-2&#34; class=&#34;outline-2&#34;&gt;&#xA;&lt;h2 id=&#34;headline-2&#34;&gt;&#xA;Setup&#xA;&lt;/h2&gt;&#xA;&lt;div id=&#34;outline-text-headline-2&#34; class=&#34;outline-text-2&#34;&gt;&#xA;&lt;div class=&#34;src src-elisp&#34;&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-elisp&#34; data-lang=&#34;elisp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#75715e&#34;&gt;;; Cask file&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  (source gnu)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  (source melpa)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  (depends-on &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;quelpa&amp;#34;&lt;/span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div id=&#34;outline-container-headline-3&#34; class=&#34;outline-2&#34;&gt;&#xA;&lt;h2 id=&#34;headline-3&#34;&gt;&#xA;Code&#xA;&lt;/h2&gt;&#xA;&lt;div id=&#34;outline-text-headline-3&#34; class=&#34;outline-text-2&#34;&gt;&#xA;&lt;div class=&#34;src src-elisp&#34;&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-elisp&#34; data-lang=&#34;elisp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#75715e&#34;&gt;;; this use melpa&amp;#39;s recipe&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  (quelpa&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;lsp-mode&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#75715e&#34;&gt;;; this will not use melpa&amp;#39;s recipe&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  (quelpa&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#39;&lt;/span&gt;(lsp-mode :fetcher github :repo &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;emacs-lsp/lsp-mode&amp;#34;&lt;/span&gt;))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#75715e&#34;&gt;;; ~:files~ is supported for file fetcher.&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  (quelpa&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;   &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#39;&lt;/span&gt;(lsp-mode :fetcher file :files (&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;*.el&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;clients/*.el&amp;#34;&lt;/span&gt;) :path &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;~/repositories/gh/emacs-lsp/lsp-mode&amp;#34;&lt;/span&gt;))&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Configure MacOS</title>
      <link>https://blog.augustfeng.app/articles/configure-macos/</link>
      <pubDate>Sun, 02 Apr 2023 00:00:00 +0000</pubDate>
      <guid>https://blog.augustfeng.app/articles/configure-macos/</guid>
      <description>&lt;div id=&#34;outline-container-headline-1&#34; class=&#34;outline-2&#34;&gt;&#xA;&lt;h2 id=&#34;headline-1&#34;&gt;&#xA;disable &amp;#34;Search man Page Index in Terminal&amp;#34; shortcut&#xA;&lt;/h2&gt;&#xA;&lt;div id=&#34;outline-text-headline-1&#34; class=&#34;outline-text-2&#34;&gt;&#xA;&lt;p&gt;&#xA;This keybinding is used by Rider&amp;#39;s &lt;strong&gt;Find Action&lt;/strong&gt; shortcut. I&amp;#39;ve disabled it&#xA;manually following the first &lt;a href=&#34;https://intellij-support.jetbrains.com/hc/en-us/articles/360005137400-Cmd-Shift-A-hotkey-opens-Terminal-with-apropos-search-instead-of-the-Find-Action-dialog&#34;&gt;workaround&lt;/a&gt; suggested by JetBrains.&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;</description>
    </item>
  </channel>
</rss>
