某古参テキストエディターの一角の新バージョンがリリースされた
古参テキストエディターの一角、響きがいいですね。
Emacs 27.1リリース
上の記事に書かれているように、GNU Emacsの新バージョン27.1がリリースされました。
記事には新機能がいくつか書かれていますが、どんな機能かイマイチわかりづらいです。ということで、ちょっとだけわかりやすく書いてみました。
MLでのリリースのお知らせ
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はGUIなEmacsでも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に書かれてなかったりします。
いくつか紹介します。
「令和」を入力できる
Emacsのjapanese
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
おしまい
古参テキストエディターの一角はまだまだ現役です!新バージョンを使って気持ちいいエディタライフを送りましょう!