<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Tree-Sitter on 怠惰技術ブログ</title>
    <link>https://techblog.wasutech.dev/tags/tree-sitter/</link>
    <description>Recent content in Tree-Sitter on 怠惰技術ブログ</description>
    <generator>Hugo -- 0.147.7</generator>
    <language>ja</language>
    <lastBuildDate>Thu, 23 Apr 2026 00:00:00 +0900</lastBuildDate>
    <atom:link href="https://techblog.wasutech.dev/tags/tree-sitter/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Emacs 30.2 で *-ts-mode が壊れる問題と対処</title>
      <link>https://techblog.wasutech.dev/posts/broken-emacs-treesitter/</link>
      <pubDate>Thu, 23 Apr 2026 00:00:00 +0900</pubDate>
      <guid>https://techblog.wasutech.dev/posts/broken-emacs-treesitter/</guid>
      <description>&lt;h2 id=&#34;結論&#34;&gt;結論&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://mwolson.org/blog/2026-04-20-fixing-typescript-ts-mode-in-emacs-30-2/&#34;&gt;Mike Olson - Fixing typescript-ts-mode in Emacs 30.2&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;上記のブログで解説と対応スクリプトが公開されてる。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Emacs 30.2 + libtree-sitter 0.26 の組み合わせで &lt;code&gt;go-ts-mode&lt;/code&gt; や &lt;code&gt;typescript-ts-mode&lt;/code&gt; などの &lt;code&gt;*-ts-mode&lt;/code&gt; が動作しない場合、現時点（2026年4月）では以下のワークアラウンドで動作させることができる。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;現時点ではこれが最適解と思う。おそらくEmacs 31 安定版がリリースされるまでこのスクリプトを使い続けることになる。&lt;/strong&gt;&lt;/p&gt;
&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-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;mkdir -p ~/.emacs.d/init
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;curl -o ~/.emacs.d/init/treesit-predicate-rewrite.el &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;  https://raw.githubusercontent.com/mwolson/emacs-shared/master/init/treesit-predicate-rewrite.el
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;init.el&lt;/code&gt; の早い段階（他の &lt;code&gt;*-ts-mode&lt;/code&gt; の設定より前）に追加する。&lt;/p&gt;
&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;load&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;~/.emacs.d/init/treesit-predicate-rewrite&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;nil&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;nil&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;nil&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;t&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;経緯&#34;&gt;経緯&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;go-ts-mode&lt;/code&gt; を開いたとき &lt;code&gt;*Messages*&lt;/code&gt; バッファに &lt;code&gt;treesit-query-error&lt;/code&gt; が出てシンタックスハイライトが死んだ。&lt;/p&gt;
&lt;p&gt;最初はグラマーの &lt;code&gt;.so&lt;/code&gt; ファイルが原因だと思い、&lt;code&gt;treesit-install-language-grammar&lt;/code&gt; で入れ直したり、&lt;code&gt;~/.emacs.d/tree-sitter/&lt;/code&gt; 以下のファイルを削除して再インストールしたりと試行錯誤した。しかし何をやっても症状が変わらず、グラマー側の問題ではないと判断した。&lt;/p&gt;
&lt;p&gt;調べたところ &lt;strong&gt;&lt;a href=&#34;https://debbugs.gnu.org/cgi/bugreport.cgi?bug=79687&#34;&gt;Emacs bug#79687&lt;/a&gt;&lt;/strong&gt; に行き着いた。グラマーの問題ではなく、Emacs 30.2 と libtree-sitter 0.26 の組み合わせ自体が壊れていた。&lt;/p&gt;
&lt;h2 id=&#34;症状&#34;&gt;症状&lt;/h2&gt;
&lt;p&gt;Emacs 30.2 で Go や TypeScript などのファイルを開くと、&lt;code&gt;*Messages*&lt;/code&gt; バッファに以下のようなエラーが表示され、シンタックスハイライトが一切効かなくなる。&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Error during redisplay: (jit-lock-function 35) signaled
(treesit-query-error &amp;#34;Syntax error at&amp;#34; 73
&amp;#34;(call_expression function: ((identifier) @font-lock-builtin-face
(#match \&amp;#34;...\&amp;#34; @font-lock-builtin-face)))&amp;#34;
&amp;#34;Debug the query with `treesit-query-validate&amp;#39;&amp;#34;)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;code&gt;go-ts-mode&lt;/code&gt; だけでなく &lt;code&gt;typescript-ts-mode&lt;/code&gt;、&lt;code&gt;python-ts-mode&lt;/code&gt;、&lt;code&gt;rust-ts-mode&lt;/code&gt; など、tree-sitter ベースの全モードで同様の問題が発生する。&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
