つーさにブログ

つうさにのメモ用ブログ

某古参テキストエディターの一角の新バージョンがリリースされた

古参テキストエディターの一角、響きがいいですね。

Emacs 27.1リリース

news.mynavi.jp

上の記事に書かれているように、GNU Emacsの新バージョン27.1がリリースされました。

記事には新機能がいくつか書かれていますが、どんな機能かイマイチわかりづらいです。ということで、ちょっとだけわかりやすく書いてみました。

MLでのリリースのお知らせ

lists.gnu.org

Emacsの新バージョンがリリースされるときは、メーリングリストに上のようなリリースのお知らせが配信されます。これに書いてある新機能を見ていきましょう1

Built-in support for arbitrary-size integers

任意精度演算がサポートされました。通常オーバーフローしてしまうような巨大な数でも演算が可能です。この機能にはGNU GMPが使われています。

;; 例 オーバーフローエラーにならない!
(let ((Gx #x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798)
      (Gy #x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8)
      (p  #xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f))
  (eql (mod (expt Gy 2) p)
       (mod (+ (expt Gx 3) 7) p)))
;; => t

Text shaping with HarfBuzz

HarfBuzzというテキストシェイピングエンジンをデフォルトで使うようになりました2。HarfBuzzはリガチャが複雑な言語でも適切に表示できると言われています。今までのEmacsではGNU/Linuxプラットフォームではlibm17n-fltが使われていました。

このバグ報告では、HarfBuzz移行によりヘブライ語の表示が改善することが確認されています。

Native support for JSON parsing

Janssonを使うことによって高速なJSONパースが可能になりました。大量のJSONの処理を行うlsp-modeのパフォーマンスが改善されたりするそうです。

Better support for Cairo drawing

Cairoによる文字、画像の描画が可能になりました3。ただし、このCairoを使う機能はデフォルトでオフになっています。この機能を使うには--with-cairoしてビルドする必要があります。

Portable dumping used instead of unexec

Emacs実行ファイルの作成方法として、unexecに代わってportable dumperという手法が使われるようになりました。

Support for XDG conventions for init files

~/.emacs.dの代わりに~/.config/emacsを使えるようになりました。ただし両方存在する場合は~/.emacs.dが優先されます。

Additional early-init initialization file

Emacs 27ではinitファイルの読み込み直前に自動でパッケージのアクティベートが行われます(package-activate-all)4。パッケージのアクティベート前に評価しておきたい式はearly-init.elファイルに書くことができます。

Lexical-binding is used by default

Emacs Lisp対話環境でLexical bindingがデフォルトになりました。Emacs Lisp対話環境とは*scratch*バッファなどのことです。

Built-in support for tab bar and tab-line

タブバー(tab-bar-mode)とtab-line (global-tab-line-mode)がサポートされました。タブバーはフレーム毎に表示されるタブで、tab-lineはウィンドウ毎に表示されるタブです。

タブバー/tab-lineはGUIEmacsでもTUIなEmacsでも使えます5

Support for resizing and rotating of images without ImageMagick

ImageMagickなしでの画像のリサイズ、回転がサポートされました。この機能を使うにはGNU/LinuxプラットフォームではCairo付きビルドか、もしくはX11のXRender拡張が必要です。

etc/NEWSを読む

https://www.gnu.org/software/emacs/news/NEWS.27.1

Emacs 27.1はメジャーバージョンアップということでたくさんの変更点があります。Emacsではバージョンアップ時の主要な変更はetc/NEWSというファイルに書かれています。

ちょっと長いですが、眺めてみたら面白い発見があるかもしれません。

etc/NEWSに書かれてない変更

細かいことはetc/NEWSに書かれてなかったりします。

いくつか紹介します。

「令和」を入力できる

Emacsjapanese input methodで「れいわ」を「令和」に変換できます。 Emacs付属のSKK辞書が更新されたのでした。

参考: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=35442

GNOMEでchild frameがアレなのが直った(?)

child frameはEmacs 26で追加された機能でしたが、GNOME環境でうまく動作しないことが報告されていました。パッチによって今までよりかなりマトモに動作するようになりました。

参考: http://git.savannah.gnu.org/cgit/emacs.git/commit/?id=c49d379f17bcb0ce82604def2eaa04bda00bd5ec

おしまい

古参テキストエディターの一角はまだまだ現役です!新バージョンを使って気持ちいいエディタライフを送りましょう!


  1. https://www.gnu.org/software/emacs/#ReleasesEmacs 27.1に書かれているものと同じです。

  2. GNU/LinuxプラットフォームとWindowsにて有効。

  3. GNU/Linuxプラットフォーム(GTKツールキット)にて有効。カラー絵文字が表示できたりします。

  4. これに伴いinitファイルに(package-initialize)を書く必要がなくなりました。

  5. ただしCocoaEmacsではタブバーは使えないようです。